Java课04
1.
结论:通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。
2.
答:
构造函数(constructor)是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。
一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们即构造函数的重载。构造函数的功能主要用于在类的对象创建时定义初始化的状态。
构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。
子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。
不能反过来调用也是这个原因,因为父类根本不知道子类有神魔变量而且这样一来子类也得不到初始化的父类变量,导致程序运行出错!
3.
1 package demo01; 2 3 4 class Person 5 { 6 int x; 7 public Person() 8 { 9 10 System.out.println("Person Created1"); 11 } 12 public void show(){ 13 System.out.println("Person Created2"); 14 } 15 16 } 17 18 19 20 class CC extends Person 21 { 22 int y; 23 public CC() 24 { 25 26 System.out.println("Child Created1"); 27 28 } 29 public void show(){ 30 super.show(); 31 System.out.println("Person Created3"); 32 } 33 34 } 35 36 37 38 public class Test 39 { 40 41 42 public static void main(String args[]) 43 { 44 45 CC c = new CC(); 46 c.show(); 47 } 48 49 }
4.
(1)
(2)当父类的对象和子类的对象地址相同时,调用子类方法;
改变父类的值,还是调用的子类方法;
使用((子类)父类对象).进行声明,改变的则是子类的值,调用子类方法。
(3)当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就 调用父类型的方法。
这个特性实际上就是面向对象“多态”特性的具体表现。
如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super 关键字来访问它。
如果子类被当作父类使用,则通过子类访问的字段是父类的!