Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:向子类构造函数添加字段?_Java_Oop_Inheritance_Constructor - Fatal编程技术网

Java:向子类构造函数添加字段?

Java:向子类构造函数添加字段?,java,oop,inheritance,constructor,Java,Oop,Inheritance,Constructor,例如,假设我有三个班,分别是个人、学生和老师。Person类将包含学生和教师类将扩展的人员的一般详细信息(姓名、年龄、电子邮件等)。除此之外,这些课程还将有自己独特的领域(例如,教师的工资和课程收费(或“tough”),学生的学年和课程号)。如果我只展示我得到的初始代码,也许有人能给我指出正确的方向。因为Person没有courseTaught字段,所以目前我只得到输出“Josh(null)”而不是“Josh(计算机科学)”。任何帮助都将不胜感激:) 这个问题比你想象的要简单。你的方法是正确

例如,假设我有三个班,分别是个人、学生和老师。Person类将包含学生和教师类将扩展的人员的一般详细信息(姓名、年龄、电子邮件等)。除此之外,这些课程还将有自己独特的领域(例如,教师的工资和课程收费(或“tough”),学生的学年和课程号)。如果我只展示我得到的初始代码,也许有人能给我指出正确的方向。因为Person没有courseTaught字段,所以目前我只得到输出“Josh(null)”而不是“Josh(计算机科学)”。任何帮助都将不胜感激:)




这个问题比你想象的要简单。你的方法是正确的,但是你忘记在你的
老师
构造函数中分配
courseTaught
courseTaught
的初始值为
null
,并且保持这种状态,因为您从未将其分配给任何对象

你会想要这样的东西:

public Teacher(String tName, String tCourseTaught){
    super(tName);  // <- takes care of Persons's field
    courseTaught = tCourseTaught; // <- but don't forget to set the new field, too.
}
公共教师(字符串名称、字符串名称){

超级(tName);//哦,哇,这比我想象的要简单!谢谢!我要把我的愚蠢归结为一整天的工作哈哈。是的,我知道getter和setter……谢天谢地,Eclipse处理了所有这些。我可能会读它,因为我仍然不明白直接访问类变量有什么不好。。。
public class Person {

    String name;

    public Person(String pName){
        name = pName;
    }
}
public class Teacher extends Person{

    String courseTaught;

    public Teacher(String tName, String tCourseTaught){
        super(tName);
    }
}
public Teacher(String tName, String tCourseTaught){
    super(tName);  // <- takes care of Persons's field
    courseTaught = tCourseTaught; // <- but don't forget to set the new field, too.
}