【基础训练 1】类的继承

【目标】理解属性的隐藏与方法覆盖的概念。

(1) 继承关系中的覆盖与重载问题

java类的继承与多态 上机报告代码 java继承多态经典例题_多态

(2)在子类中增加一个方法和 parent 类一样,为了显示差别, 在输出上加处理:

void m( ) { 
System.out.println("x=" + x); 
}

重新编译运行程序,观察结果变化,理解方法的覆盖关系

java类的继承与多态 上机报告代码 java继承多态经典例题_java类的继承与多态 上机报告代码_02

在此处,由于子类重写了父类的方,所以a.m()调用的是自己的方法和属性。

(3)在子类方法中,加入通过 super 引用访问父类方法和属性的代码:

java类的继承与多态 上机报告代码 java继承多态经典例题_子类_03

在这里,super代表父类对象引用,用super调用父类成员。

(4)站在父类引用看成员

修改以上 main 方法的引用类型,用父类引用变量引用子类对象。

parent a = new child( );

重新调试运行程序,观察结果变化。总结用父类引用访问成员的特点。

java类的继承与多态 上机报告代码 java继承多态经典例题_子类_04

用父类引用变量引用子类对象,执行实例方法是对象的方法,而访问属性以及执行静态方法均取决于引用类型。

java类的继承与多态 上机报告代码 java继承多态经典例题_父类_05

(5)将以上属性和方法均改为静态的,重新进行测试。最后,总结成员访问规律

java类的继承与多态 上机报告代码 java继承多态经典例题_多态_06

【基础训练 2】方法的参数多态

【目标】了解方法调用的参数匹配处理。

(1)参数多态的方法匹配

java类的继承与多态 上机报告代码 java继承多态经典例题_父类_07

(2)将上述 main 方法中的“b.m1(50)”改为“b.m1(50.2)”, 进行测试,发现什么问题。总结参数转换匹配规律。

java类的继承与多态 上机报告代码 java继承多态经典例题_子类_08

传参时,参数类型要一致。

【实验总结】

继承与多态还有很多重要的知识点:当子类实例化时,不仅需要初始化子类成员变量,也需要初始化父类成员变量,初始化父类成员变量需要调用父类构造方法,子类使用super关键字调用父类构造方法。此外,super语句必须位于子类构造方法的第一行。发生多态的三个前提条件:继承,多态发生一定要子类和父类之间;覆盖,子类覆盖了父类的方法;

声明的变量类型是父类类型,但实例则指向子类实例。