我有一个名为“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
表示只运行子类构造函数而不是父类。
怎么可能...
答案 0 :(得分:3)
每当一个类的构造函数被调用时,它的父类的构造函数也会被隐式调用。
正如@SilvioMayolo 在评论中指出的那样,原因是
<块引用>“如果你不希望孩子表现得像父类,那么它就不应该是父类。”
从概念上讲,它是一个子类是因为子类从其父类继承了一些属性或功能。在您的示例中,如果您不想在调用子构造函数时打印 "hello, i am parent class constructor"
,则实际上不需要子类的父类实际上是其父类。
因此,您想要实现的功能在 Java 中是不可能的,因为它是该语言的隐含特性。