Java中的多态应用
2020-12-13 14:22
标签:protected system super extends 构造方法 span set java his Test.main()函数执行后的输出是( ) 答: 22 34 17 Java中的多态应用 标签:protected system super extends 构造方法 span set java his 原文地址:https://www.cnblogs.com/yuyu97513/p/11559724.html 1 class Test {
2 public static void main(String[] args) {
3 System.out.println(new B().getValue());
//1、执行B的构造方法
//14、执行父类A的getValue得到17
//18、输出返回值17
4 }
5 static class A {
6 protected int value;
7 public A (int v) {
8 setValue(v);
//3、调用子类B重写的setValue
9 }
10 public void setValue(int value) {
11 this.value= value;
//5、value=10
//13、valve=16
12 }
13 public int getValue() {
14 try {
15 value ++;
//6、value=11
//15、value=17
16 return value;
//10、执行finally前暂存value的值11,返回11
//18、执行finally前暂存的值17,返回17
17 } finally {
18 this.setValue(value);
//7、return前执行finally,this指当前实例对象B,调用子类B的setValue,value=22
//16、this调用子类B的setValue方法,得到value=34
19 System.out.println(value);
//9、输出22
//17、输出34
20 }
21 }
22 }
23 static class B extends A {
24 public B () {
25 super(5);
//2、调用父类A的构造函数
26 setValue(getValue()- 3);
//5、调用父类A的getValue获得11
//11、调用子类B的setValue传入11-3的结果8
27 }
28 public void setValue(int value) {
29 super.setValue(2 * value);
//4、显式调用父类A的setValue传入10
//8、传入2*11的值22
//12、传入2*8的值16,调用父类的setValue传入16
30 }
31 }
32 }
上一篇:C#读取csv格式文件
下一篇:c#异步调用