这个向上演示是如何工作的?

我创建了一个向上转换的演示,我不明白这段代码是如何工作的,或者我可以更具体地说,为什么在派生类完成调度时还调用基类的构造函数。甚至没有调用基类的构造函数。除了基类的构造函数如何调用之外,我什至没有在任何地方使用 super 关键字。


class Base{

        int value =0;

        Base(){


            addValue();

        }

        void addValue(){


            value+=10;

        }

        int getValue(){

            return value;

        }


}

class Derived extends Base{


    Derived()

    {

        addValue();

    }

    void addValue(){

        value+=20;

    }

}

class Test{

    public static void main(String args[]){

        Base b=new Derived();

        System.out.println(b.getValue());

    }

}


绝地无双
浏览 143回答 2
2回答

HUH函数

派生对象是基础对象,以及更多。Java 和大多数语言一样,需要构造整个对象,包括由 Base 构造函数初始化的部分。看看是这样的:什么是将value的初始设置为0?那不也是 Base 代码的一部分吗?super如果您愿意,Java 允许您指定要使用的基类构造函数,但如果您不指定,它将选择一个。这些规则可能很复杂,但在这种情况下它们很简单:从无参数派生构造函数调用无参数 Base 构造函数。作为测试,将 Base() 构造函数设置为私有并查看编译器告诉您的内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java