第九章:三个修饰符
一、
abstract[
抽象的
]
1. abstract
可以修饰类:
(1)
被
abstract
修饰的类称为抽象类
(2)
语法:
abstract class
类名
{}
(3)
特点:抽象类只能声明引用,不能创建对象
(4)
抽象类中可以定义属性和成员方法、构造方法
2. asbtract
可以修饰方法:
(1)
被
asbtract
修饰的方法称为抽象方法
(2)
语法:
访问修饰符
abstract
返回值类型 方法名
(
形参
);
注意:访问修饰符和
abstract
没有先后顺序
(3)
特点:抽象方法只有声明部分,没有方法的实
现
(4)
注意:抽象方法只能定义在抽象类中
3.
抽象可以定义子类
(1)
语法:
class
类名
extends
抽象类类名
{}
(2)
特点:子类不想成为抽象类,则必须覆盖父类
中所有的抽象方法
二、
static[
静态的
]
1.
可以修饰属性:
2.
可以修饰方法:
(1)
被
static
修饰的属性称为静态属性、静态变
量、类变量
(2)
语法:
static
数据类型 变量名
;
static
数据类型 变量名
=
值
;
(3)
特点:静态变量基于类存在,被所有对象共
享,和创建对象的多少无关
(4)
使用:
a.
可以通过 对象
.
静态属性名
b.
可以直接通过 类名
.
静态属性名
->
建
议
(1)
被
static
修饰的方法称为静态方法
(2)
语法:
访问修饰符
static
返回值类型 方法名
(
形
参
){}
(3)
使用:直接通过 类名
.
静态方法名
(
实参
);
(4)
注意:静态方法中只能访问本类的静态成员,
不能直接访问本类的非静态成员
(5)
静态方法中不能使用
this
和
super
关键字
3.
可以代码块
(1)
被
static
修饰的代码称为静态代码块
(2)
位置:定义在类以内,方法以外,被
static
修饰的
{}
(3)
语法:
class
类名
{
static{}
}
(4)
作用:在类加载的时候,静态代码块按照和属
性定义的先后顺序完成对静态属性的初始化工作
(5)
类加载:当
jvm
第一次使用一个类的时候,通
过
classpath
找到类对应的
.class
文件,对文件
进行读取
,
读取该类的包名、类名、父类、属性、构
造方法等信息,并将读取的信息保存到
jvm
内存
中,一个类进行一次类加载。
(6) jvm
类加载的时机
(
什么叫第一次使用一个
类
)
:
a.
第一次访问该类的静态成员
b.
第一次创建该类对象:
先进行类加载,再完成对象的创建
c.
子类类加载,先导致其父类类加载
三、
final[
最终的、最后的
]
1. final
可以修饰变量:
2. final
可以修饰方法:允许子类继承,但是不允许
覆盖
3. final
可以修饰类:被
final
修饰的类不允许被继
承,没有子类,例如:
System
、
Math
(1)
被
final
修饰的变量作用范围内的常量
(2) final
数据类型 变量名
;
(3)
特点:只允许一次赋值,不允许修改
(4)
注意:引用一旦被
final
修饰,代表引用中存
储的对象不能更换
思考:
System.out.println();
实现原理?
System ->
类
out ->
静态 属性
-
》对象类型
println() ->
方法