素材牛VIP会员
java 继承的问题
 蜗***牛  分类:Java代码  人气:1387  回帖:11  发布于6年前 收藏
// 父类
class Sup {
    int a = 8;
    public void printA(){
        System.out.println(a);
    }
    Sup(){
        printA();
    }
}

//子类
class Sub extends Sup{
    int a = 9;
    Sub(){
        printA();
    }
    public static void main(String[] args) {
        new Sub();
    }
}

为什么两次输出的都是 8 ,按照多态的概念,在子类构造函数中调用者应该是子类对象,访问的也因该是是子类对象的属性9。
是不是我理解多态和继承有毛病。

 标签:java

讨论这个帖子(11)垃圾回帖将一律封号处理……

Lv4 码徒
Su***er JS工程师 6年前#1

1.new Sub()的时候会调用父类的构造函数,所以会有两次print
2.printA()是父类的方法,是声明在Sup这个类里的,System.out.println(a);打印的a不可能从跨过父亲里去找子类的属性a,因为java没有这个特性。

最后,打个比方,儿子让父亲帮买本书《Java编程思想》,那父亲会用自己的买,如果儿子给父亲了,那父亲就可以用儿子的,你的例子中,儿子没有给父亲

上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取