emmm,我有一个小问题想问一下大家。
图一图二是我的题目。
图三图四图五是我修改好的代码。
图六和是我在修改前碰到的一个error.之后我在person.Java那个文件中加了 public person(){}才运行成功
大概知道自己之前错了是因为在person.Java那个文件里少了public Person (){}.所以才造成了图六的标红。但呃没看明白我少的这句,它是什么意思有什么作用呢?图六的标红我一个个词翻大概是说 暗含的父类person未定义构造方法,需要定义一个明确的构造方法。可是我不是之前已经定义了一个 public person(String ID,String name)的构造方法吗?为什么不可以,而要新写public person(){}呢?
求大佬解答,蟹蟹您!
1条回答 默认 最新
关注 让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
问题描述: 问:为什么在Person.java文件中定义了一个构造方法public Person(String ID, String name),还需要再定义一个public Person(){}构造方法呢? 回答: 在Java中,当一个类没有声明任何构造函数时,系统会为它自动创建一个默认构造函数。这个默认构造函数没有任何参数,方法体也为空。但是,当你自定义一个构造方法时,系统默认的构造函数将不再被创建。这也就是你问的问题的答案。 在你的例子中,你创建了一个public Person(String ID, String name)构造方法,因此系统默认的无参数构造函数已经不存在了。如果你想在不传递参数的情况下创建一个Person对象,你就需要自己定义一个无参构造函数public Person(){}。这个构造方法可以什么也不做,只需要在创建一个Person对象时调用即可。 例如,如果你的代码中需要创建一个空的Person对象,你就必须这样写: Person person = new Person(); 但是如果你的代码中需要创建一个有参数的Person对象,你就直接调用public Person(String ID, String name)构造方法就行了,例如: Person person = new Person("001", "张三"); 这就是为什么你需要在Person.java文件中定义一个public Person(){}构造方法的原因。它允许你在不传递参数的情况下创建一个Person对象。 最后,关于你在修改前遇到的“暗含的父类person未定义构造方法,需要定义一个明确的构造方法”错误,这是因为在你定义Student类时,它继承了Person类,但Person类中没有明确的无参构造方法,因此你需要手动创建一个public Person(){}构造方法来避免这个错误。 代码示例: // Person.java public class Person {String ID; String name; public Person(String ID, String name) { this.ID = ID; this.name = name; } // 无参构造方法 public Person() {}
} // Student.java public class Student extends Person { int grade; String major; public Student(String ID, String name, int grade, String major) { super(ID, name); this.grade = grade; this.major = major; } }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 c++ gmssl sm2验签demo
- ¥15 关于模的完全剩余系(关键词-数学方法)
- ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
- ¥30 模拟电路 logisim
- ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
- ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
- ¥15 安装quartus II18.1时弹出此error,怎么解决?
- ¥15 keil官网下载psn序列号在哪
- ¥15 想用adb命令做一个通话软件,播放录音
- ¥30 Pytorch深度学习服务器跑不通问题解决?