目录
abstract与final、static、private、native的关系
abstract关键字
说道抽象类,首先就要提到abstract关键字
修饰范围:
类,方法
作用:
修饰类:
abstract修饰类,代表这个类为抽象类
1.抽象类除了不能实例化对象(不能用new创建一个抽象类的对象)之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
2.由于抽象类不能实例化对象,所以抽象类必须被继承后,才能被使用。否则则不可使用
3.如果一个非abstract类是abstract类的子类,他必须重写父类的抽象方法(父类中的非抽象方法可以不用重写),并给出方法体
4.如果一个抽象类是另一个抽象类的子类,他可以重写父类的abstract方法,也可以继承父类的abstract方法
修饰方法:
abstract修饰方法,代表这个类为抽象方法
1.抽象方法只允许声明,不允许实现(没有的方法体)
抽象类和抽象方法的关系
1.abstract类中可以有abstract方法,也可以有非abstract方法
2.非abstract类不能有abstract方法
abstract与final、static、private、native的关系
final和abstract不能修饰同一个对象或类
对于类来说,被final修饰代表不能被继承,而被abstract修饰的方法不被继承就无法被使用
对于方法来说,被final就是代表方法不能被重写,而被abstract修饰的方法不被重写就无法被使用
static和abstract不能修饰同一个对象或类
对于类来说,static无法修饰普通类,static修饰内部类相当于这个类是一个普通类(存疑?)
对于方法来说,因为static修饰的方法为静态方法,是这个类所有对象共用的,可以直接用类名调用,而被abstract修饰的方法没有方法体,无法直接被调用,需要在子类或者实现类中重写才可以调用
private和abstract不能同时修饰一个对象或类
对于类来说,private不能修饰类
对于方法来说,如果一个方法被修饰为private,代表这个方法不能被继承,而abstract方法需要被继承才可以重写
native和abstract不能修饰同一个对象或类
对于类来说,native是个方法修饰符,不能用于修饰类
对于方法来说,native修饰的是一个本地方法,该方法不能由java实现,比如C/C++,因为native暗示这个方法是有方法体的,只不过这些实现体是非java的,abstract却显然的知名这些方法无实现体
综上所述,abstract不能和final,static,private,native共用