- day09起,day10止
- 静态代码块随类的加载而加载,并且只执行一次。
- 构造代码块在每次调用构造的时候都会执行,并且在构造方法前执行。
- 继承的注意事项:
- 子类只能继承父类所有非私有成员;
- 子类不能继承父类的构造方法,但是可以通过super关键字去访问。
super.成员变量:调用父类的成员变量;
super(…)可以调用父类的成员方法。子类所有构造方法都会默认访问父类中空参数的构造方法。
方法重写的注意事项:
- 父类中私有方法不能被重写;
- 子类重写父类方法时,子类的访问权限不能更低,最好一致;
- 子类重写父类方法的时候,最好方法申明一模一样。
final修饰类,类不能被继承;修饰变量,变量变常量;修饰方法,方法不能被重写。final修饰引用类型后,引用类型的地址值不能被改变。
多态:
1.成员变量:编译看左边,运行看左边;
2.成员方法:编译看左边,运行看右边。
3.静态方法:编译、运行看左边(父类)。Animal a = new Cat();
向下转型:
Cat c = (Cat)a;
- 多态的好处是可以当作形式参数,接受任意子类对象;多态的弊端是不能使用子类特有的行为和方法。
- 抽象类不一定有抽象方法,有抽象方法的一定是抽象类或者抽象接口。
- 抽象类中的抽象方法是强制要求子类做的事情。
- 接口格式:
interface 接口名{}
- 类实现接口的格式:
class 类名 implements 接口名 {}
- 接口的成员变量是静态的、公共的、常量,用“public static final”修饰。
- 接口与接口之间可以单继承,也可以多继承。
- 抽象类的成员方法可以是抽象的,也可以是非抽象的。接口的成员方法只可以是抽象的。
- 抽象类是定义该继承体系中的共性功能;
接口中定义的是该继承体系中的扩展功能。 - 四种权限修饰符总结:
修饰符 | 本类 | 同一个包下(子类和无关类) | 不同包下(子类) | 不同包下(无关类) |
---|---|---|---|---|
private | Y | |||
默认 | Y | Y | ||
protected | Y | Y | Y | |
public | Y | Y | Y | Y |
- 成员内部类被静态修饰后的访问方式:
外部类名.内部类名 对象名 = 外部类对象.内部类对象
- JDK1.8之前,局部内部类访问局部变量,局部变量必须用final修饰。
- 局部内部类格式:
new 类名或者接口名() {
方法重写;
}