gpt4 book ai didi

java - 在Java中创建没有构造函数的子类实例

转载 作者:行者123 更新时间:2023-12-01 18:13:48 28 4
gpt4 key购买 nike

我面临着一件奇怪的事情。 Java 理论认为,*子类不会从其父类(super class)继承任何构造函数,并且必须提供自己的构造函数。尽管如此,我还是编写了一个程序,其主类从子类生成一个没有参数(默认构造函数)的对象,而该子类中不存在任何构造函数。此外,该对象还初始化了其父类(super class)的属性。这意味着父类(super class)已将其构造函数继承给子类......从理论上讲,这是错误的。

import java.util.Scanner;

public class Test {
public static void main(String[] args){
Student S = new Student();
System.out.println(S);
}
}


public class Person {
private String name="Scarlett";
public String getName(){
return name;
}
}


public class Student extends Person {
private String name="Johansson";

/* THIS IS MISSING BUT STILL WORKING
Student(){
super();
}
*/

@Override
public String toString(){
return "Name is "+getName()+" Surname is "+ this.name;
}
}

这段代码的输出:

run:
Name is Scarlett Surname is Johansson
BUILD SUCCESSFUL (total time: 1 second)

最佳答案

如果您没有定义任何构造函数,默认情况下,Java将创建一个public、不抛出任何异常的无参数构造函数,这就是您所要做的在你的用例中看到。一旦创建任何构造函数,无论其可见性、参数列表或throws子句如何,Java都将停止创建默认构造函数。

关于java - 在Java中创建没有构造函数的子类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30967863/

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