Java 关键字:abstract、static、final

abstract 关键字
只能修饰类和方法,不能修饰变量。

抽象方法只定义方法声明,不定义方法实现。
抽象类不可以被实例化(创建对象),只有通过子类继承抽象类并覆盖抽象类中的所有抽象方法后,该子类才可以被实例化,否则该子类还是一个抽象类。
抽象类中有构造函数用于给子类对象进行初始化,同时抽象类中可以含有非抽象方法。

abstract 关键字不可以与 final,private,static 关键字共存
(1)被 final 修饰的方法不可以被重写,如果 abstract 和 final 共同修饰父类中的方法,子类要实现抽象方法( abstract 的作用),而 final 又不让该方法重写,这相互矛盾。
(2)如果 private 和 abstract 共同修饰父类中的方法,private 修饰则该方法不可以被子类访问,但是 abstract 修饰需要子类去实现,两者产生矛盾。
(3)如果 static 和 abstract 共同修饰父类中的方法,static 表示是静态的方法,随着类的加载而加载,则该方法不需要在子类中去实现,这与 abstract 关键字矛盾。

static 关键字
用于修饰 成员变量 和 成员函数(不能在方法内定义静态变量),想要实现对象中的共性数据的对象共享,可以将这个数据进行静态修饰。
被静态修饰的成员可以直接被类名调用,静态随着类的加载而加载,而且优先于对象存在。
静态方法只能访问静态成员(静态方法和静态变量),不可以访问非静态成员,这是因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。
静态方法中不能使用 this 和 super 关键字,因为 this 代表本类对象,super 代表父类对象,而静态时,有可能没有对象存在,所以 this 和 super 无法使用。

final 关键字
可以修饰类,方法,变量(成员变量,局部变量,静态变量)。
被 final 修饰的类是一个最终类,不可以被继承。
被 final 修饰的方法是一个最终方法,不可以被覆盖,但是可以被继承。
被 final 修饰的变量只能是一个常量,只能赋值一次。
在方法内部类中,如果要访问方法的局部变量,就只能是 final 修饰的:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_41641234/article/details/81315606