gpt4 book ai didi

java - 派生构造函数

转载 作者:行者123 更新时间:2023-12-01 07:42:50 25 4
gpt4 key购买 nike

在下面的代码中:

import java.io.*;

public class MyClass1
{
MyClass1()
{
System.out.println("base class");
}
public void print()
{
System.out.println("base print");
}
}

class ChildClass extends MyClass1
{
public ChildClass()
{
System.out.println("child class");
}
public void print()
{

System.out.println("child print");
}
}

为什么当我创建 ChildClass 类型的实例时,基类的构造函数也会被执行?

最佳答案

因为您的子类扩展了基类 - 它是基类的实例,并且具有所有相同的字段和变量等。因此基类也必须被实例化。

举一个具体的例子,假设您的基类具有以下内容:

public class Base
{
final private int id;

public Base()
{
this(-1);
}

public Base(int id)
{
this.id = id;
}

public getId()
{
return id;
}
}

最终变量保证在构造类时被实例化。您的子类将有一个 id 字段(即使它无法使用子方法直接访问它),并且由于该字段是私有(private)的,因此您无法使用子构造函数实例化它 - 因此基类构造函数 <必须调用。

请记住,这不仅仅是最终变量的问题,也不是您可能使用的任何特定功能所独有的 - 因为您的子类基类,所以它需要是正确实例化为一个。

关于java - 派生构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1672851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com