java 接口与继承及他们的区别
抽象类
被abstract修饰的类,不能创建实例对象(不能实例化),即不能用new创建对象,哪怕抽象类中没有抽象方法;
含有抽象方法的类必须定义为抽象类,但抽象类中的方法不必须是抽象的
抽象类中定义抽象方法必须在子类中实现,如果子类没有实现抽象父类中的所有抽象方法,那么子类也是抽象类,
接口
接口是抽象类的一种特例,接口中的所有方法都必须是抽象的,
接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final
区别
1 :抽象类可以有构造方法,接口中不能有构造方法
2:抽象类中可以有普通成变量,接口中没有普通成员变量,
3:抽象类串可以包含非抽象的普通方法,接口中的所有方法必须都是抽象方法,
4:一个类可以实现多个接口,但只能继承一个类,
如何选择场景应用:
接口在系统架构设计方法中主要用于定义模块之间的通信,而抽象类在代码实现方法可以实现代码的重用。
备注:
既然抽象类不能被实例化,那抽象类的构造函数有何意义?
答:构造函数的功能是初始化对象的实例属性, 抽象类的构造函数也是一样的功能:初始化抽象类内部声明的实例变量,
实现方式:通过其子类的构造方法调用父类抽象类的构造方法super(),构造函数链调用(Java中构造函数链是指从其他构造函数调用另一个构造函数)
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论