一、关键的这句话 1.子类创建对象时会调用父类的构造方法 2.采用suoer显示声明了就是调用这个显示声明的父类构造方法,没有默认调用父类的那个默认的空构造方法(父类中声明了带参
一、关键的这句话
1.子类创建对象时会调用父类的构造方法
2.采用suoer显示声明了就是调用这个显示声明的父类构造方法,没有默认调用父类的那个默认的空构造方法(父类中声明了带参数的构造方法默认的就要显示写出)。
摘抄网络:在创建子类对象时,会把父类里的成员变量和方法也加载进内存(因为要加载进内存,所以要看下这些数据是怎么初始化的,所以调用了父类的构造,仅此而已,并不是去创建了父类对象)
二、示例
父类People 子类Student
1.父类的属性和构造方法
2.子类的属性(新加了两个属性学号和分数)
子类的构造方法
3.测试类:创建4个Student对象
三.运行结果
父类构造方法1:无参
student类构造方法1:无参数
null--0--0--0.0
————————————————————————————————
父类构造方法2:父类参数
student类构造方法2:仅父类参数
tom--21--0--0.0
————————————————————————————————
父类构造方法1:无参
student类构造方法3:仅student类参数
null--0--1--100.0
————————————————————————————————
父类构造方法2:父类参数
student类构造方法4:全参数
cat--21--2--100.0
四、总结
1.子类一般都有自己新加的属性,在实例化时可以选择给或不给新加的属性赋值。
2.不管你子类自己这个构造函数里给不给自己的新属性赋值,反正在实例化时父类的构造函数会先执行。
3.先找父类构造函数时,用super加参数指明了是父类哪个的就用这个指明的,找不到的话就用默认的(显示写出)。