三大修饰符
代码块
作用:封装一段代码
语法:
{}
定义位置:
1,方法中
注意:此时不会影响代码的运行,定义相当于没定义
2,类中,方法以外
注意:
1,此时每次创建该类对象时,就会执行该代码块中的代码
2,该代码块在构造函数前执行
3,在对象的属性赋初始值之后
static
含义:静态
可以修饰:
属性
含义:公共的(使用static修饰符属性属于该类的所有对象,如果其中一个对其进行修 改,那么该类的所有对象的该属性都将被修改)
使用方式:
对象名.属性名/类名.属性名
注意:
static修饰的属性不管该类有多少个对象,该属性只有一个
方法
含义:静态方法
使用方法:
对象名.方法名(实参列表);
类名.方法名(实参列表);
注意:
1,静态方法中不能直接使用非静态成员(没有使用static修饰的属性或方法)
2,静态方法中不能使用this或super关键字
代码块
调用时机:JVM加载该类时调用
由于一个类只会被加载一次,所以该代码块只会被执行一次
语法:
static{
}
内部类
类加载
总结:使用该类时
如:
使用类名调用静态属性或静态方法
创建该类对象
创建其子类对象
获取类对象时
在静态下对象的创建过程
没有继承关系
1,加载该类
2,给静态属性赋初始值
3,执行静态代码块中的代码
4,在堆内存中开辟空间
5,给非静态属性赋初始值
6,执行代码块中的代码
7,执行构造函数
8,赋值给栈用的引用
总结:先静,再非静态
final
含义:最终的,不可修改的
可以修饰:
类
语法:
访问权限修饰符 final class 类名{
}
特点:使用final修饰的类不能被别的类继承
属性
语法:
访问权限修饰符 final 数据类型 变量名 = 值;
特点:
final修饰的属性必须在声明时赋值
值不能被修改
方法
语法:
访问权限修饰符 final 返回值类型 方法名(形参列表){
}
特点:
final修饰得方法不能被重写
局部变量
语法:
final 数据类型 变量名;
注意:
final修饰的局部变量只能赋值一次
常量
概念:不能被修改的变量或值称为常量
abstract
含义:抽象的
可以修饰
类
特点:不能直接创建对象
语法:
访问权限修饰符 abstract class 类名{
属性
放法
构造函数
代码块
静态代码块
}
方法
特点:没有方法体
语法:
访问权限修饰符 abstract 返回值类型 方法名(形参列表);
注意:
有抽象方法的类一定是抽象类
抽象类中不一定有抽象方法
子类继承与抽象类要么重写父类所有抽象方法,要么自己也是抽象类
abstract能否与static一起使用?
不能一起使用
abstract能否与final一起使用?
不能一起使用
static能否与final一起使用?
可以一起修饰属性,方法