不调用父类构造函数,在java中可以直接调用子类构造函数

时间:2021-02-04 04:18:46

标签: java oop inheritance constructor parent-child

我有一个名为“parents”的父类和一个名为“child”的子类,它扩展了父类。如果子类和父类都具有相同的参数但不同的行为构造函数,那么如果我创建子类 objcet,它将自动调用我不想要的父类构造函数。这是怎么可能的。

例如

    class parents
    {
      parents()
      {
      
     System.out.println("hello, i am 
          parents class constructor");
      }
    }

    class child extends parents
    {
      child()
      {
     System.out.println("hello, i am 
  child class constructor");
      }
    }

    class main
    {
      public static void 
   main(String[] args)
      { 
        child c = new child();
      }
    }

现在,

输出是.....

    hello, i am  parents class constructor
    hello, i am  child class constructor

但我只想...

    hello, i am child class constructor

表示只运行子类构造函数而不是父类。

怎么可能...

1 个答案:

答案 0 :(得分:3)

每当一个类的构造函数被调用时,它的父类的构造函数也会被隐式调用。

正如@SilvioMayolo 在评论中指出的那样,原因是

<块引用>

“如果你不希望孩子表现得像父类,那么它就不应该是父类。”

从概念上讲,它是一个子类是因为子类从其父类继承了一些属性或功能。在您的示例中,如果您不想在调用子构造函数时打印 "hello, i am parent class constructor",则实际上不需要子类的父类实际上是其父类。

因此,您想要实现的功能在 Java 中是不可能的,因为它是该语言的隐含特性。