关于抽象类和接口叙述正确的是? ( )
特点:
1.抽象类中可以构造方法
2.抽象类中可以存在普通属性,方法,静态属性和方法。
3.抽象类中可以存在抽象方法。
4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰
关键字使用注意:
抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。
1.在接口中只有方法的声明,没有方法体。
2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final
3.在接口中的方法,永远都被public来修饰。
4.接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类)
5.接口可以实现多继承
6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。
7,接口可以继承接口,用extends
jdk1.8之前
接口
1.多实现
2.变量类型默认且只能为为public static final
3.函数类型默认且只能为public,只能有public类型的静态成员函数
4.非静态成员函数没有方法体,静态成员函数有方法体
5.子类必须实现所有接口函数
6.可以有main方法;可以new一个接口,需要在方法体中实现所有接口函数
7.没有构造器
抽象类
1.单继承
2.变量类型不限(静态变量+非静态变量)
3.函数类型不限(静态函数+非静态函数)
4.非静态函数包含没有方法体的抽象函数. 有方法体的普通函数
5.子类可以不覆写父类的抽象方法,但子类也要申明为抽象类;子类可以选择覆写父类的非抽象方法
6.可以有main方法;不可以new一个抽象类
7.可以有构造器
Jdk1.8
接口中可以有default类型的方法,实现类可以选择实现该方法
意义:默认方法的主要优势是提供一种拓展接口的方法,而不破坏现有代码。另一个优势为该方法是可选的,子类可以根据不同的需求Override或默认实现。
1.private关键字
(1)修饰成员:可以修饰成员变量和成员方法
(2)特点:被private修饰后的成员只能在本类中被访问
abstract不能和private一起使用:private修饰后的方法为私有方法,只能在本类中被使用,子类不能继承,而abstract子类必须覆盖实现父类中的抽象方法,相互冲突,不能使用
2.final关键字
(1)final类:final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。
(2)final方法:如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
(3)final变量(常量):用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变。
abstract不能和final一起使用:final修饰后的方法,锁定方法,防止任何继承类修改它的意义和实现,而abstract子类必须覆盖实现父类中的抽象方法,相互冲突,不能使用
3.static关键字
(1)为特定的数据类型或对象分配单一的存储空间.
(2)实现某个方法或属性与类关联在一起,被static修饰的变量和方法,可以通过类名.变量名或类名.方法名直接引用。
abstract不能和static一起使用:static修饰的是静态方法,可以直接被类调用;而abstract修饰的类中只有方法名,无方法体,不能被直接调用,故abstract不能和static一起使用