1.抽象类必须要有抽象方法吗?
抽象类可以没有抽象方法,按时如果一个类已经声明为抽象方法,及时这个类中没有抽象方法,他也不能再实例化,即不能直接构造一个该类的对象,如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译不通过。
2.普通类和抽象类有哪些区别?
抽象类不能被实例化
抽象类可以有抽象方法,抽象方法只需要声明,无需实现
含有抽象方法的子类必须实现抽象类中所有的抽象方法,否者这个子类也是抽象类
含有抽象方法的类必须声明为抽象类
抽象类不能声明为静态,不能用private和final修饰:抽象类是用于继承的,final修饰代表不可更改,不可继承
3.接口和抽象类有什么区别?
(1)抽象类和接口都不能实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
(2)抽象类要被子类继承,接口要被类实现
(3)接口中只能方法声明,而抽象类中可以方法实现
(4)接口定义的变量是公共的静态常量,抽象类中是普通变量
(5)抽象类的抽象方法没有被子类完全实现,那么这个子类也是抽象类,接口中的方法如果没有被类实现,那么这个类是抽象类。
(6)接口是设计的结果,抽象类是重构的结果
(7)接口可继承接口,并可以多继承,而抽象类只能单根继承。