0
点赞
收藏
分享

微信扫一扫

抽象类和接口的区别

晚安大世界 2022-02-15 阅读 89

抽象类和接口的区别

  1. 成员区别:
    抽象类:变量,常量,有构造方法,抽象方法,非抽象方法
    接口:常量,抽象方法
  2. 关系区别:
    类和类:继承,单继承
    类与接口:实现,可以单实现,可以多实现
    接口与接口:继承,单继承,多继承
  3. 设计层面区别:
    抽象类:对事物的抽象,包括属性和行为
    接口:对行为抽象,主要是行为

例如:打开一个门会发出报警声音,但不一定所有的门都会发出报警:

抽象类:门,打开和关闭方法
接口:报警器,报警方法
原因:

  1. 报警器作为接口是因为不一定所有门打开和关闭都会发出报警声音,可以做有无实现接口
  2. 门作为抽象类是因为一定会有打开和关闭门的操作

图文和代码形式讲解:

图:Alram接口(报警器),Door抽象类(门),DemoImpl(测试类)
柏维怡

Alram(接口)

package CCom.Cnn;
//单独定义一个报警器,是为了避免所有的门未必都会发出声音
public interface Alram {
    void alram();//有无发出报警声音
}

Door(抽象类)

package CCom.Cnn;
//打开和关闭在门类
public abstract class Door {
    public abstract void open();//打开行为
    public abstract void close();//关闭行为
}//门类

DemoImpl(测试类)

package CCom.Cnn;
public class DemoImpl extends Door implements Alram {
    @Override
    public void open() {
        //对门这个事物进行打开行为
    }

    @Override
    public void close() {
        //对门这个事物进行关闭行为
    }
    /*
       前者是抽象类,后者是接口
     */
    @Override
    public void alram() {
        //报警器是否发出声音 可有可无(是否实现报警器接口)
    }
}

强调:一定要灵活运用抽象类和接口的关系,抽象类一定是事物(属性和行为)的抽象,接口一定是行为抽象

举报

相关推荐

0 条评论