23.10.13 PPT作业

发布时间 2023-10-13 20:48:54作者: 起名字真难_qmz
 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、

  1. 首先,Parent类和Child类都有一个名为myValue的实例变量,但是Child类中覆盖了父类的printValue方法。
  2. 在第3行,创建了一个Parent类的对象parent,然后调用其printValue方法。这将打印出Parent类的myValue,即0。
  3. 在第5行,创建了一个Child类的对象child,然后调用其printValue方法。这将打印出Child类的myValue,即1。
  4. 在第7行,将parent引用指向child对象,这是多态性的一种体现。
  5. 在第8行,调用parentprintValue方法,这将再次打印Child类的myValue,仍然为1。
  6. 在第9行,递增parentmyValue,此时parent引用指向Child对象,因此myValue增加到2。
  7. 在第10行,再次调用parentprintValue方法,这将打印Child类的myValue,即2。
  8. 在第11行,将parent强制转型为Child对象,并递增其myValue。此时,parent引用指向Child对象,因此Child类的myValue增加到3。
  9. 在第12行,再次调用parentprintValue方法,这将打印Child类的myValue,即3。

2、

Java语法特性:

  1. 多态性:在第7行,可以将子类对象赋给父类引用,并通过父类引用来访问子类的方法和属性。

  2. 方法覆盖(方法重写):Child类覆盖了Parent类的printValue方法,因此在运行时调用parent.printValue()时,实际上调用的是Child类的printValue方法。

  3. 强制类型转换:在第11行,我们使用了强制类型转换将parent引用转为Child类,以访问Child类特有的属性和方法。

  4. 实例变量继承:Child类继承了Parent类的实例变量myValue,但子类可以覆盖父类的实例变量,即使两者具有相同的名称。