子类对象实例化的过程
子类中所有的构造函数默认都会访问父类中空参数的构造函数

因为每一个构造函数的第一行都有一条默认的语句 super();
子类继承了父类,获取到了父类中内容(属性),所以在使用父类
内容之前,要先看父类是如何对自己的内容进行初始化的

PS
1、当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者
super语句指定要访问的构造函数

2、子类构造函数中如果使用this调用了本类构造函数,那么默认的 super();
就没有了,因为supe和this都只能定义在第一行,所以只能有
但是可
以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数

3、super语句必须要定义在子类构造函数的第一行!因为父类的初始化动作
要先完成。

多态性1
多态性时面向对象中最重要的 ,有两种情况体现:
1,方法的重载(overload)和重写(overwrite)
2,对象的多态性----可以直接应用在抽象类和接口上

java引用变量有两个类型:编译时类型和运行时类型,编译时类型,由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。
*若编译时类型和运行时类型不一致,就出现多态多

多态性2
多态性的状态--在java中,子类的对象可以代替父类对象使用
一个变量只能有一种确定的数据类型
一个引用数据类型变量可能指向(引用)多种不同类型的对象
Person p = new Student();
Object o = new Person(); //object类型的变量o,指向person类型的对象
o=new Student(); //object类型的变量o,指向student 类型的对象
*子类课看做是特殊的父类,所以父类类型的引用可以指向子类的对象:向上转型(upcasting)

多态性3
一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量就不能再访问子类中添加的属性和方法
Student p=new Student();
m.school="puk"; //合法,Student类洋浦school成员变量
Person e=new Student ();
e.school="pku" //非法,person类没有school 成员变量

属性是在编译时确定的,编译时e类person类型,没有school成员变量,因而编译错误