【问题标题】:Without calling parents class constructor,it is possible to call direct child class constructor in java在java中不调用父类构造函数,可以直接调用子类构造函数
【发布时间】:2021-05-08 09:06:22
【问题描述】:

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

例如

    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

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

怎么可能……

【问题讨论】:

  • 不,这在标准 Java 中是不可能的。并且有充分的理由。如果您不希望孩子表现得像父类,那么它不应该是父类。它应该是一个实例变量,甚至根本不存在。
  • 如果答案对您有帮助,请考虑接受。它有帮助。

标签: java oop inheritance constructor parent-child


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多