- 早上查题,背一遍然后检查自己一遍以上
- 中午有时间就背一遍以复习昨天的为主
- 晚上背一遍,第二天中午再看一眼:day+1
- 第四天课间看一遍:day+3
- 第七天课间看一遍:day+6
- 第十五天课间看一遍:day+14
重写发生的条件:
(1)有继承,子类要改动父类原方法的内容
(2)参数列表相同
(3)返回值类型相同
(4)重写后的方法权限首饰符,不小于父类原方法的权限修饰符(能盖住)
内部类:类的成员,用处?
1.方便访问外部类的私有资源
2.不可见性
3.解决多继承冲突问题
多态的运行
子类对象指向父类引用
只能调用父类有的属性和父类的方法;
但如果父类的属性和父类的方法自己也有;属性优先调用父类的,但是方法如果自己有则优先调用子类自己的
(子类方法 中如果调用的属性子类有则调用子类的,子类没有再调用父类的)
子类对象指向父类引用 如果非要使用子类自己的属性,需要先向下转型(把子类对象的引用指回子类自己)
向下转型前需要通过instanceof来判断对象的实际类型是否满足子类引用 fat对象 instanceof Son类
静态多态 重载
动态多态条件: 继承、上溯造型、重写
一旦满足以上3个条件,当调用父类中被重写的方法后,运行时创建的是哪个子类的对象,就调用该子类中重写的那个方法
在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际类型调用相应的方法
static
what:静态的,类的
where:块,属性,方法,类
why:静态块一般用来给类进行初始化
静态块:
- 不能使用非静态的属性
- 当第一次new所属类的对象或者通过类名调用静态资源的时候会运行静态块的代码
- 但是只运行一次,而且首先运行
静态方法:
方便调用,适合设计一些不需要本类的数据但是应该归本类提供的方法
- 不能使用非静态的属性,可以使用非静态的局部变量;
- 可以被类名直接调用,也可以被对象直接调用
静态变量:
有一些属性我们希望他的值能统一,只存一份,一份改则全改。
- 在普通方法和构造器 中可以使用静态变量。
- 没有静态的局部变量,静态可以修饰的变量一定是属性,
- 静态变量在静态块执行之前已经存在
静态类:
- 嵌套类使用static关键字。static不能用于最外层的类。只有静态内部类
当对象第一次被new的时候:
0.父类的静态变量(父类加载进方法区:java的反射)
1.先执行父类的静态块的代码,
1.2:子类的静态变量(子类加载进方法区)
1.3:再执行子类的静态块(静态块永远只执行一次,永远第一个执行)
1.5:父类的普通变量(父类对象诞生)
2.执行父类普通块的代码(永远在构造器之前执行,每次new对象都执行)
3.执行父类的构造器的代码
3.5:子类的普通变量(子类对象诞生)
4.执行子类的普通块
5.执行子类的构造器
所有的静态变量都保存在自己类的静态区中,所有对象公用一个静态变量