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