代码块:
局部代码块:
构造代码块:和构造方法一起执行,并且先于构造方法执行,每new一次 就执行一次
静态代码块:和类一起加载, 并且只执行一次
子类会继承父类中的数据,所有子类初始化之前一定会先初始化父类
子类中的所有构造方法 默认会继承父类空参构造 super()
方法重写注意事项
* a:父类中私有方法不能被重写
* 因为父类私有方法子类根本就无法继承
* b:子类重写父类方法时,访问权限不能更低
* 最好就一致
* c:父类静态方法,子类也必须通过静态方法进行重写
* 其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)
若父类没有无参构造:
1、super(参数) 访问父类有参
2、this(参数) 访问本类有参去访问父类有参
多态:polymorphic
静态方法
* 编译看左边(父类),运行看左边(父类)。
成员方法 编译看左边,运行看右边(子类)
抽象类 abstract class
有成员变量 可以是常量 也可以是变量
有构造方法,用于给子类初始化
抽象类的方法不一定是抽象的 抽象方法一定在抽象类中或者接口中
一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
可以,不让其他类创建本类对象,让子类去完成
abstract 不能和哪些关键字共存
static : 类名点调用 无意义
final : final 不能重写
private : 不能被继承
接口 interface implement
成员变量只能是常量
没有构造方法