抽象类和接口的区别(使用举例)

区别:

    1、抽象类代表的是“is-a”的关系,接口所代表的是"like-a"的关系。

    2、接口实际上是一个特殊的抽象类。

    3、抽象类可以有抽象方法,也可以有实例方法

         接口中所有的方法都是公开抽象方法

    4、具体类使用抽象类,用extends(继承)

          具体类使用接口,用implements(实现)

    5、具体类实现接口,必须重写接口中的所有方法!

    6、抽象类可以有自己的构造方法,接口不能有构造方法


举例:

抽象类:

abstract class Door {
    public abstract void open();
    public abstract void close();
 }

接口:

interface Door{    
    public abstract void open();
    public abstract void close();
}

     如果需要添加一个报警alarm()的功能,该如何实现?

     如果把alarm()放到抽象类里,但是有的门不一定具备报警的功能,所以此路不通!

     如果把alarm()放到接口里,需要用到报警功能的类就需要实现这个接口中的open( )和close( ),也许这个类根本就不具备   open( )和close( )这两个功能,比如火灾报警器。所以此路也不通!

    以下为解决办法:

interface Alarm{
    void alarm();
}
abstract class Door{
    void open();
    void close();
}
class AlarmDoor extends Door implements Alarm{
    void open(){
        //TODO    
    }
    void close(){
        //TODO    
    }
    void alarm(){
        //TODO    
    }
}

你可能感兴趣的:(技术文章)