java子类可以继承父类的构造方法吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java子类可以继承父类的构造方法吗相关的知识,希望对你有一定的参考价值。

  一,java子类不能继承父类的构造方法(可以调用,但不是继承):
  1、构造方法的定义是与类的名称相同:如果子类能够继承父类的构造方法,那么在子类的构造方法中就有不同于子类名称的构造法;
  2、这与构造方法的定义不符,因此子类是不能继承父类的构造方法的;
  3、以上参考资料来源:http://bbs.csdn.net/topics/360118234

  二,子类继承父类时,需要注意以下三点:
  1、在子类继承父类的时候,子类必须调用父类的构造函数;
  2、在父类有默认构造函数,子类实例化时自动调用,在父类没有默认构造函数,即无形参构造函数,子类构造函数必须通过super调用父类的构造函数;
  3、在java的继承当中子类是不可以继承父类的构造函数,只能调用父类的构造函数。
参考技术A

可以的。

class Parent()
    public Parent()System.out.println(" parent 1");
    public Parent(String n)System.out.println(" parent 2 "+n);

class Child extends Parent()
    public Parent()super();/*此行可注释*/System.out.println(" Child 1 ");
    public Parent(String n)super(n);System.out.println(" Child 2 "+n);
    public Parent(int n)System.out.println(" Child 3 "+n);

本回答被提问者采纳
参考技术B 可以继承的 这是最基础的知识了

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

参考技术A 最近我看见有人问过这个问题。在此我想表达一下自己的观点。
根据面向对象中关于继承这个概念子类继承父类所有的属性和方法。那么既然是所有的那么本人认为也应当也包括构造函数(方法)。
我先举一个C++的例子:classParentprivate:intp;public:Parent(void):p(0)Parent(inti):p(i);classChild:publicParentprivate: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代码:classParentprivateintp;publicParent()p=0;publicParent(inti)p=i;classChildextendsParentprivateintc;publicChild()super();c=0;publicChild(inti)super(i+1);c=i;
我们可以看到,在Java中可以利用super关键字来访问本类父类的构造方法。这样在一定程度上也消除了歧异性比如你也可以在Child类中的某一个方法中这么写:Parent
p
=
new
Parent();而利用super()就表示了子类在初始化本类域前先初始化其父类域。这也可以证明在Java中子类继承父类构造方法,并且子类可以通过super来访问父类的构造方法,只要父类的构造方法不是private。

以上是关于java子类可以继承父类的构造方法吗的主要内容,如果未能解决你的问题,请参考以下文章

关于java中子类继承父类的构造方法

java中一个子类是不是可以继承父类的构造方法

JAVA中,子类将继承父类的所有属性和方法吗?为啥?

子类可以继承父类的啥

子类可以继承父类的啥

关于Java 的继承问题,子类会继承父类的哪些东西?