java听课笔记(八)
三个修饰符
static
属性,方法,代码块
不可以修饰局部变量
属于类,可以通过类名进行调用。
类变量(属于类)
实例变量(属于对象)
类加载的时候初始化static修饰的变量
构造函数可以初始化static变量吗?(应该可以)
静态方法
通过类名直接调用
static public是可以的
非静态的既可以访问静态也可以访问非静态
静态的只能调用静态的
静态方法中不能使用this,super关键字
this和super属于当前对象,静态优先对象存在
静态方法在内存中的数据段,this和super是heap堆的引用,不能对数据段中的数据进行调用
非静态方法只能覆盖非静态方法
静态方法只能覆盖静态方法
但是没有多态
静态代码块
static{
}
构造方法,语句块,静态代码块执行顺序
类中的其他代码可以放在
{ }
static 构造方法 语句块
final
修饰变量(属性,局部变量)
一旦赋值就不可以改变
修饰属性时,必须对属性显式赋值,或使用构造方法赋值
final static 一起修饰属性
变量:一旦给值,就不可以修改,并且可以通过类名访问
对于方法:表示不可覆盖,并且可以通过类名访问
final方法不能子类覆盖
final类不能被继承
abstract
修饰类,抽象类
不能实例化
含有抽象方法的类必须是抽象类
抽象类不一定含有抽象方法
子类继承抽象类,要么实现父类全部的抽象方法,要么把子类声明为抽象类
当一个子类不需要被实例化,定义为抽象类
子类相同行为有各自不同的实现方式时,把父类定义为抽象类