子类继承父类的构造函数(方法)吗?

如题所述

1、根据面向对象中关于继承这个概念子类继承父类所有的属性和方法。
2、由于构造函数非常特别,对它的调用就像是调用一个C函数一样,而不是利用对象来调用的。
3、可以看到,在Java中可以利用super关键字来访问本类父类的构造方法。这样在一定程度上也消除了歧异性
4、可以证明在Java中子类继承父类构造方法,并且子类可以通过super来访问父类的构造方法,只要父类的构造方法不是private。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-25
最近我看见有人问过这个问题。在此我想表达一下自己的观点。根据面向对象中关于继承这个概念子类继承父类所有的属性和方法。那么既然是所有的那么本人认为也应当也包括构造函数(方法)。我先举一个C++的例子:classParent{private:intp;public:Parent(void):p(0){}Parent(inti):p(i){}};classChild:publicParent{private:intc;public:Child(void):Parent(),c(0){//在这里,创建Child对象时先构造父类域}Child(inti):Parent(i+1),c(i){//同上}};由于构造函数非常特别,对它的调用就像是调用一个C函数一样,而不是利用对象来调用的(若不先构造对象哪儿来的对象?)。因此鉴于这份特殊性我们可以这么考虑:将上述代码中classChild:publicParent去掉: public Parent,我们可以编译试试,是否能成功。事实上正是因为Parent与Child有亲子关系,所以Child构造函数中可以调用Parent的构造函数先对其Parent域进行初始化。这个特点非常符合工程学详见我的文章《我比起Java更喜欢C++的理由语义》。下面将贴出相应的Java代码:classParent{privateintp;publicParent(){p=0;}publicParent(inti){p=i;}}classChildextendsParent{privateintc;publicChild(){super();c=0;}publicChild(inti){super(i+1);c=i;}}我们可以看到,在Java中可以利用super关键字来访问本类父类的构造方法。这样在一定程度上也消除了歧异性比如你也可以在Child类中的某一个方法中这么写:Parent p = new Parent();而利用super()就表示了子类在初始化本类域前先初始化其父类域。这也可以证明在Java中子类继承父类构造方法,并且子类可以通过super来访问父类的构造方法,只要父类的构造方法不是private。本回答被提问者采纳

子类继承父类的构造函数(方法)吗?
根据面向对象中关于继承这个概念子类继承父类所有的属性和方法。那么既然是所有的那么本人认为也应当也包括构造函数(方法)。我先举一个C++的例子:classParent{private:intp;public:Parent(void):p(0){}Parent(inti):p(i){}};classChild:publicParent{private:intc;public:Child(void):Parent(),c(0...

java子类可以继承父类的构造方法吗
1、在子类继承父类的时候,子类必须调用父类的构造函数;2、在父类有默认构造函数,子类实例化时自动调用,在父类没有默认构造函数,即无形参构造函数,子类构造函数必须通过super调用父类的构造函数;3、在java的继承当中子类是不可以继承父类的构造函数,只能调用父类的构造函数。

JAVA中 子类与父类构造方法的关系 个人理解
子类构造函数自动调用super() (也可以手动加上)但如果父类只有含参数的构造方法,那么子类必须申明一个构造方法,其中包含对super(args)的调用 一、父类含有无参构造函数 1、子类没有构造方法或者含有无参的构造方法:这种情况,都会默认地调用super()2、子类含有有参数构造方法:同样会在首句默认...

...的问题:子类无条件地继承父类不含参数的构造函数。这句话对还是错...
不对的,构造函数是不能继承的。子类可以继承父类的所有成员变量和成员方法,但不能继承父类的构造方法。这就意味着,子类不能用“.”来操作父类的构造方法。但实际上,子类的构造方法中一定会调用父类的构造方法,不过这种调用只是为了创建子类对象进行的初始化处理。而不会创建父类对象。可以使用super...

java 构造函数的构造函数的继承
如果父类没有默认构造函数,那子类不能从父类继承默认构造函数。(2)子类从父类处继承来的父类默认构造函数,不能成为子类的默认构造函数。(3)在创建对象时,先调用父类默认构造函数对对象进行初始化,然后调用子类自身自己定义的构造函数。(4)如果子类想调用父类的非默认构造函数,则必须使用super...

C++子类会无条件继承父类的构造函数么
在C++中,构造函数不会自动继承,只是如果子类没有写构造函数,那么系统会这个类自动添加一个默认构造函数,是一个空函数体,所以什么也没有做,接着就会调用父类的构造函数,所以你觉得是继承了父类的构造函数。子类和父类的构造函数的调用顺序:class B:public A B b1;那么构造函数的调用顺序是:A(...

子类可以继承父类的什么
子类可以获得除private权限以外的所有父类属性,但是:1、在子类继承父类的时候,子类必须调用父类的构造函数。2、如果父类有默认构造函数,子类实例化时自动调用,但如果父类没有默认构造函数,即无形参构造函数,子类构造函数必须通过super调用父类的构造函数。3、还有在java的继承当中子类是不可以继承父...

java进行构造方法的时候,为什么一定要有一个无参构造方法?
1.子类继承父类的时候会自动继承父类的默认构造函数(也就是继承那个无参数的构造函数)。2.无参构造函数是所有构成函数的父类,如果没有写那个默认的不带参数的构造函数的话,继承的时候子类就会报错,因为系统不知道要不继承哪个构造函数,必须明确的使用super()关键字来描述。所以一般为了避免这种错误...

JAVA中,子类将继承父类的所有属性和方法么~?为什么?
是的,子类将继承父类的非私有的属性和方法。在JAVA中,子类继承父类的所有方法和属性(构造方法要用关键super([参数])调用);继承是JAVA中一个重要的特色,便于程序的编写,提高代码的重用性。1、如果给子类i提供get和set 通过get调用的自然是子类的。2、如果给父类和子类分别提供get和set,调的...

父类的静态函数会不会被子类继承?
构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。如果没有显式的构造函数,编译器会给一个默认的构造函数,并且...

相似回答