15、构造器是否可被override
constructor(构造器)不能被继承,所以不能被override(重写),但是可以被overloading(重载)。
16、抽象类和接口的区别
抽象类是什么
含有abstract修饰符的class即为抽象类。
特点:
1、不能创建的实例对象
2、可以有抽象方法
3、可以有构造方法,但构造方法不能是抽象的
4、抽象方法必须子类进行实现,如果子类只实现部分方法,该子类必须是抽象的
接口是什么
含有interface修饰符的就是
特点:
1、接口中的所有方法都必须是抽象的
2、接口中的方法定义默认为public abstract类型
3、接口中的成员变量类型默认为public static final
区别是什么
单继承多实现:一个类可以实现多个接口,但只能继承一个抽象类。
构造方法:抽象类可以有构造方法,接口中不能有构造方法。(JDK7之前)
变量:抽象类中可以有普通成员变量,接口中只有常量。
方法:抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
修饰符:抽象类中的抽象方法可以使用public和protected进行修饰,但接口中的抽象方法只能使用public abstract修饰。
静态方法:抽象类中可以包含静态方法,接口中不能包含静态方法
抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
(注:JDK1.8新特性,接口可以有默认方法和静态方法)