zoukankan      html  css  js  c++  java
  • 多态父子间方法和变量的调用,到底调用的是父亲还是儿子

     1 class Super
     2 {
     3     int i=0;
     4     public Super(String a)
     5     {
     6         System.out.println("A");
     7         i=1; 
     8     }
     9     public Super()
    10     {
    11         System.out.println("B");
    12         i+=2;
    13     }
    14 }
    15 
    16 class MultiStatementDemo extends Super
    17 {
    18     //int i; //打开这句,结果大不一样。
    19     public MultiStatementDemo(String a)
    20     {
    21         //super();//改成super("a"),结果又不一样。
    22         System.out.println("C");
    23         i=5; 
    24     }
    25 
    26     public static void main(String[] args)
    27     {
    28         int i=4;
    29         Super d = new MultiStatementDemo("A");
    30         System.out.println(d.i);
    31     }
    32 }
    33 
    34 /*
    35     由于MultiStatementDemo类继承了Super类,当创建对象时,
    36     其实在MultiStatementDemo的省略了super()这个方法,如果在Super类中,
    37     没有默认构造方法,会报错,楼主可以注释掉那个无参的构造方法,
    38     此时需要显示super(参数)调用父类显示的有参构造方法;
    39 
    40     1.题中隐式的调用了默认构造方法,此时输出了B,
    41     2.由于MultiStatementDemo中没有定义i,此时,MultiStatementDemo构造方法中的i,代表的是父类的i,i=5,也是对于父类的i赋值的。
    42       若在MultiStatementDemo类中声明一个成员变量i,那这个i就为子类的i,i赋值为对子类赋值。
    43     3.d.i调用的仍然是父类的i,若MultiStatementDemo中没有声明i,结果为5,若MultiStatementDemo声明了i,结果为2.
    44 
    45 */
  • 相关阅读:
    POJ 1019 组合计数
    POJ 3252 组合计数
    SPJ 与 Student 数据库的创建于数据插入
    POJ 1496 POJ 1850 组合计数
    Java常用类库--大数处理类
    POJ 2492 并查集应用的扩展
    POJ 3268 双向Dijkstra
    线段树(带删除节点)
    西工大10级保研机试 柱状图
    KMP专场 POJ
  • 原文地址:https://www.cnblogs.com/hacket/p/3033977.html
Copyright © 2011-2022 走看看