一、三大修饰符:abstract(抽象的)、static(静态的)、final(最终的)
在使用的时候和四大访问修饰符没有先后顺序
二、abstract(抽象的)
(一)修饰范围:类和方法
1、修饰类:被abstract修饰的类称为抽象类,不允许创建对象,但可以声明 引用
(1)语法:abstract 类名{ }
(2)用法:
a、抽象类中可以定义属性和方法
b、抽象类中可以创建构造方法,但构造方法是为子类创建对象时使用的
c、抽象类中既可以有抽象方法也可以有非抽象方法
d、另外一个类继承了抽象类,如果该类不想成为抽象类的话,必须覆盖抽象类中的所有抽象方法
抽象类名 引用名 =new 子类名()
2、修饰方法:被abstract修饰的方法称为抽象方法,只有方法的声明部分,没有方法的实现,连{}都没有。
(1)语法:访问修饰符 abstract 放回值类型 方法名(形参列表)
(2)注意:
a、抽象方法只能在抽象类中
b、一个抽象类中既可以有抽象方法也可以有非抽象法
三、static(静态的)
(一)修饰范围:可以修饰属性、方法、初始代码块
1、修饰属性:被static修饰的属性称为静态属性或类属性,被该类的所有对象共享
(1)语法:访问修饰符 static 数据类型 变量名
(2)使用:直接 类名.属性名
2、修饰方法:被static修饰的方法称为静态方法,也称类方法。同样该方法被该类的所有对象共享。
(1)语法:访问修饰符 static 返回值类型 方法名(形参列表){方法体语句}
(2)使用:直接 类名.方法名
(3)注意:
a.静态方法中不允许直接使用非静态的属性和方法(可以直接使用静态属性方法)
b.非静态方法中可以使用静态的属性和方法
c.静态方法中不允许使用this和super关键字
d.静态方法允许被继承,但没有多态(子类中定义了和 父类相同的方法,当通过父类的引用调用方法时,执行的是父类里的方法)
3、修饰初始代码块:被static修饰的初始代码块称为静态初始代码块
(1)初始代码块:定义在类以内,方法以外的代码块(被{}括起来的代码)
(2)初始代码块的作用:在创建对象时,根据属性和初始代码块定义的顺序依次给属性赋初值
(3)语法:static { }
(4)作用:在类加载时,根据静态属性和静态初始代码块定义的顺序依次进行初始化工作,只进行一次
【注意】类加载:
当JVM第一次使用某个类时,通过classpath环境变量找到对应的.class文件,从.class文件中获取该类的相关信息并保存在JVM中,这个过程称为类加载,且只进行一次。
类加载的时机:
a.第一次创建一个类的对象时
b.第一次使用静态属性或静态方法时候
四、final(最终的)
(一)修饰的范围:修饰类、变量、方法
(1)修饰属性:被final修饰的变量,只允许一次赋值,一旦被赋值不允许改变,可以多次使用
(2)修饰方法:被final修饰的方法,允许被继承,但不允许覆盖
(3)修饰类:别final修饰的类不允许继承,没有子类