三大修饰符(都不能修饰构造方法)
关键字abstract(抽象)
-
abstract 可以修饰属性,方法,类;
-
抽象类:abstract关键字修饰的类是抽象类,抽象类可以声明引用,不能创建对象
-
抽象方法:abstract关键字修饰的类是抽象方法;抽象方法只有方法的声明,没有实现
-
如果一个类拥有抽象方法,这个类必须是抽象类,抽象类未必有抽象方法
-
子类继承一个抽象类,如果子类不想成为抽象类,就必须实现父类中所有的抽象方法
-
抽象类支持多态
关键字static(静态)
static关键字只能修饰属性和方法,初始代码块
-
static修饰属性
- 属性的初始化不是在创建对象的时候。
- 属性全类共享;可以用类名直接访问。
- 静态属性可以直接通过,类名进行访问。
-
static 修饰方法
- 静态方法只能被子类的静态方法覆盖,而且没有多态(没有多态是因为java后根据引用的类型调用相应的静态方法,而不是子类覆盖后的静态方法)
- 静态方法可以直接通过类名去访问
- 静态方法只能访问静态成员(静态属性,静态方法)
- 静态方法中不能出现this关键字(this代表指向当前对象,而静态方法可以通过类名直接访问,没有当前对象)(默认类名.静态方法)
-
static修饰静态初始代码块
- 静态初始代码块在类加载的时候执行
- 什么是类加载?
- ()类加载在创建对象之前进行
- ()JVM首次使用某个类时,需通过CLASSPATH查找该类的.lass文件(这个过程叫做类加载)
- ()如果只是声明一个引用是不需要类加载的
- 类加载的顺序
- (1)如果有父类,先父类进行父类的类加载
- (2)按顺序初始化静态属性或是执行静态初始代码块
- 类加载的时机
- (1)第一次创建对象
- (2)第一次访问子类,需要先加载父类的类加载,再加载子类的类加载
- (3)访问静态成员(静态属性,静态方法)
- (4)Class.forName(“权限定名”);
final关键字
final关键字可以修饰变量,方法,类
fiinal修饰变量
- final修饰的变量为常量,常量一旦赋值不可改变(final修饰的变量,不再提供默认值,必须手动赋值。要保证当对象创建完成的时常量是有值的,可以再直接赋值,可以再构造方法中赋值)(因为常量赋值后不可改变,一般用public static修饰。便于访问,可以节省空间,全类共享)。
fiial修饰方法
- final修饰的方法不能被子类覆盖,
final修饰类
- final修饰的类不能被继承。
访问修饰符可以修饰哪些
private 属性 方法 构造方法
(default) 属性 方法 构造方法 类
protected 属性 方法 构造方法
public 属性 方法 构造方法 类
- 静态初始代码块在类加载的时候执行
三大修饰符与哪些修饰符不能连用
private abstract 不能联用(私有的不可被继承)
final abstract 不能联用(final修饰的类不允许被继承)
static abstract 不能联用(static不能修饰类)