java 接口与继承及他们的区别

sancaiodm Java 2021-12-16 1397 0

抽象类

被abstract修饰的类,不能创建实例对象(不能实例化),即不能用new创建对象,哪怕抽象类中没有抽象方法;

含有抽象方法的类必须定义为抽象类,但抽象类中的方法不必须是抽象的

抽象类中定义抽象方法必须在子类中实现,如果子类没有实现抽象父类中的所有抽象方法,那么子类也是抽象类,


接口

接口是抽象类的一种特例,接口中的所有方法都必须是抽象的,

接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final


区别

1 :抽象类可以有构造方法,接口中不能有构造方法

2:抽象类中可以有普通成变量,接口中没有普通成员变量,

3:抽象类串可以包含非抽象的普通方法,接口中的所有方法必须都是抽象方法,

4:一个类可以实现多个接口,但只能继承一个类,


如何选择场景应用:

接口在系统架构设计方法中主要用于定义模块之间的通信,而抽象类在代码实现方法可以实现代码的重用。


备注:
既然抽象类不能被实例化,那抽象类的构造函数有何意义?

答:构造函数的功能是初始化对象的实例属性, 抽象类的构造函数也是一样的功能:初始化抽象类内部声明的实例变量,

实现方式:通过其子类的构造方法调用父类抽象类的构造方法super(),构造函数链调用(Java中构造函数链是指从其他构造函数调用另一个构造函数)

评论