三大修饰符
抽象的
概念:无法描述的,无法实例的
关键字:abstract
可以修饰哪些东西?
方法
语法格式:
访问权限修饰符 abstract 返回值类型 方法名(){
}
注意:
1、抽象方法没有方法体
2、有抽象方法的类一定是抽象类
类
语法格式:
访问权限修饰符 abstract class 类名{
属性
方法
构造函数
}
注意:
1、子类继承于抽象类,要么重写抽象类的所有方法,要么自己也是抽象类
2、抽象类无法直接创建对象
3、抽象类中不一定有抽象方法
最终的
概念:无法修改的,最后的
关键词:final
可以修饰什么东西?
类
意义:最终类,不能被别的类继承
语法:
访问权限修饰符 final class 类名 extends 父类名{
属性
方法
构造函数
}
方法
意思:不可被重写
语法:
访问权限修饰符 final 返回值类型 方法名(形参列表){
方法体
return xxx;
}
属性
意思:不可被修改,称为常量,常量名全大写
语法:
访问权限修饰符 final 数据类型 属性名;
final修饰的变量就是常量
局部变量
意思:不可被修改,称为常量,常量命名全大写
语法:
final 数据类型 属性名;
final修饰的变量就是常量
局部变量
静态的
概念:该类所有对象共有的,属于类
可以修饰什么东西?
属性
语法:访问权限修饰符 static 数据类型 变量名;
static修饰的属性称为静态成员变量
注意:
1、static修饰的属性属于该类的所有对象,一个对象对其进行修改,所有对象的该属性都将被修改
2、static修饰的属性多了一种调用方式
语法:
类名.属性名;
类名.属性名 = 值;
原来:
对象名.属性名;
对象名.属性名 = 值;
方法:
语法:
访问权限修饰符 static 返回值类型 方法名(形参列表){
方法体
}
static修饰的方法称为静态方法
注意:
1、静态方法中只能直接使用静态成员(静态属性,静态方法)
2、static修饰的方法多了一种调用方式
语法:
类名.方法名(实参列表);
原来:
对象名.方法名(实参列表);
3、静态方法中不能使用this与super
代码块
静态代码块
代码块
概念:一块代码
语法:
{
代码
}
调用:
每次调用该类构造函数创建对象时,由系统调用该类的普通代码块,在执行构造函数千调用
普通代码块:
类中方法以外
与static结合使用
语法; static {
}
调用:
类加载时调用,所以只会调用一次
类的加载时机:
第一种情况:第一次创建该类对象时
第二种情况:第一次创建子类对象时
第三种情况:使用类名调用本类静态属性
第四种情况:使用类名调用本类静态方法
第五种情况:使用第一次使用反射获取该类对象时
Class.forName("包名.类名");
注意:类只加载一次
一个类有静态与非静态属性,先加载静态属性
在继承关系:先加载父类静态,在加载子类静态,父类非静态,子类非静态