23.10.13 PPT作业
1 public class ParentChildTest { 2 public static void main(String[] args) { 3 Parent parent=new Parent(); 4 parent.printValue(); 5 Child child=new Child(); 6 child.printValue(); 7 parent=child; 8 parent.printValue(): 9 parent.myValue++; 10 parent.printValue(); 11 ((Child)parent).myValue++; 12 parent.printValue(); 13 }

1、
- 首先,Parent类和Child类都有一个名为
myValue的实例变量,但是Child类中覆盖了父类的printValue方法。 - 在第3行,创建了一个Parent类的对象
parent,然后调用其printValue方法。这将打印出Parent类的myValue,即0。 - 在第5行,创建了一个Child类的对象
child,然后调用其printValue方法。这将打印出Child类的myValue,即1。 - 在第7行,将
parent引用指向child对象,这是多态性的一种体现。 - 在第8行,调用
parent的printValue方法,这将再次打印Child类的myValue,仍然为1。 - 在第9行,递增
parent的myValue,此时parent引用指向Child对象,因此myValue增加到2。 - 在第10行,再次调用
parent的printValue方法,这将打印Child类的myValue,即2。 - 在第11行,将
parent强制转型为Child对象,并递增其myValue。此时,parent引用指向Child对象,因此Child类的myValue增加到3。 - 在第12行,再次调用
parent的printValue方法,这将打印Child类的myValue,即3。
2、
Java语法特性:
-
多态性:在第7行,可以将子类对象赋给父类引用,并通过父类引用来访问子类的方法和属性。
-
方法覆盖(方法重写):Child类覆盖了Parent类的
printValue方法,因此在运行时调用parent.printValue()时,实际上调用的是Child类的printValue方法。 -
强制类型转换:在第11行,我们使用了强制类型转换将
parent引用转为Child类,以访问Child类特有的属性和方法。 -
实例变量继承:Child类继承了Parent类的实例变量
myValue,但子类可以覆盖父类的实例变量,即使两者具有相同的名称。

浙公网安备 33010602011771号