06动手动脑

mac2022-06-30  26

1 class A 2 { 3 public void get() 4 5 { 6 System.out.println("A"); 7 } 8 } 9 10 class B extends A 11 { 12 public void get() 13 14 { 15 super.get(); 16 17 System.out.println("B"); 18 } 19 } 20 21 public class Address 22 { 23 public static void main(String [] args) 24 25 { 26 B b=new B(); 27 28 b.get(); 29 } 30 }

程序结果截图;

 

上述程序运行结果判断:

Parent.printValue(),myValue=100

Child.printValue(),myValue=200

Child.printValue(),myValue=200

Child.printValue(),myValue=200

Child.printValue(),myValue=201

 

解释:

第一二行为正常的输出;

第三行因为parent指向Son类型的对象,所以调用子类方法;

因为parent.myValue++调用的为Father类的变量,所以第四行调用子类的方法;

((Child)parent).myValue++调用的为子类的变量所以第五行调用的为子类的方法,变量值为201;

 

特点:

当父类变量引用一个子类对象时,调用的实例方法为子类的方法,调用的类方法为父类的方法;调用的变量为父类的变量

转载于:https://www.cnblogs.com/china-xyh/p/7816801.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)