abstract
- 抽象类中 可以有抽象方法
非抽象方法 - 抽象方法 只能存在于抽象类中
- 抽象类不能被实例化 但是有构造器(构造方法)
- 抽象类中 非抽象方法调用本类中的抽象方法
在子类中对抽象方法进行重写 子类在调用继承的父类的非抽象方法
那么 最后调用的是重写后的父类的抽象方法
static
-
static修饰的静态方法 能对本类的静态方法和静态变量进行操作
不能操作本类的非静态方法、变量
因为静态方法、变量依附于类,不依附于对象
非静态方法、变量需要依附于对象 -
非静态方法中 可以操作静态方法、变量
-
静态方法可以提高系统运行效率 因为静态方法在编译时已经绑定,不需要动态绑定
-
静态代码块
静态代码块只在类加载的时候执行一次,不会随着对象的创建再次执行。
静态变量和静态代码块的执行顺序取决于定义的先后顺序。
静态代码块可以提高运行效率 -
static修饰基本数据类型变量默认值
final
- final修饰变量
final修饰基本数据类型,必须赋初值且不能改变值,作为常量使用
final修饰引用类型,引用指向不能改变,但可以改变引用指向的对象的属性 - final修饰方法 表示方法不能被重写(可以继承,但是不能重写)
- final修饰类 表示最终类 不能被继承
类加载
- 父类静态代码块/父类静态变量 --> 子类静态代码块/子类静态变量
–> 父类构造函数 --> 子类构造函数
接口
接口中成员变量 必须且默认是 public static final 修饰的
因为
- 接口是高度抽象的模板,接口中的类就是模板中的成员,为实现接口的类所共有,所以必须是public static
- 接口中的方法都是abstract修饰的抽象方法,没有方法体,不能修改成员变量,所以不是final没有意义