抽象类与接口面试题汇总
1、abstract class 与 interface有什么区别:
含有abstract 修饰的类即为抽象类,抽象类不能被实例化
抽象类中可以有抽象方法,抽象方法必须在子类实现,如果子类没有完全实现父类的抽象方法,那么子类也必须是abstract修饰
其实抽象类与普通类的区别就在于它不可被实例化和它可以有抽象的方法。
接口可以说是抽象类的一个特例,接口中所有的方法都必须是抽象的,接口中的方法默认为public abstract类型,接口中的成员变量默认为public static final
下面比较一下二者的语法区别:
(1)抽象类内可以有构造方法,接口中不可以有构造方法
(2)抽象类中可以有普通的非抽象方法,而接口中的所有方法都必须是抽象的。
(3)访问类型不同,抽象类的抽象方法可以是public 和 protected ,接口内的方法只能是public ,并且默认就是public abstract
(4)抽象类可以包含静态方法,接口中没有
(5)抽象类和接口中都可以包含静态成员变量,在抽象类中静态成员变量的访问类型任意,而接口中只能是public static final
(6)一个类可以实现多个接口,但是只能继承一个抽象类
(7)接口可以继承接口,抽象类可以实现接口
下面说说两者在应用上的区别:
接口更多的是在系统架构设计方面发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用。
上一篇:
Java基础知识总结(2021版)
下一篇:
计算机应届博士生的一点求职经验——腾讯篇