Java 父类和子类的问题

Java 父类和子类的问题,java,parent-child,bluej,Java,Parent Child,Bluej,我试图为类HthsStudent创建一个构造函数,它从类Student继承变量和状态。(学生从班级人员继承变量和状态。) 问题是,java不喜欢我尝试的方式,并且不断告诉我我所做的是错误的,尽管这正是我在课堂上所做的。它告诉我有一个“无效的方法声明,需要返回类型”错误,但我看不到修复它的方法 我做错了什么?我该如何修复它 谢谢 /** * Write a description of class Persn here. * * @author (your name) * @versi

我试图为类HthsStudent创建一个构造函数,它从类Student继承变量和状态。(学生从班级人员继承变量和状态。)

问题是,java不喜欢我尝试的方式,并且不断告诉我我所做的是错误的,尽管这正是我在课堂上所做的。它告诉我有一个“无效的方法声明,需要返回类型”错误,但我看不到修复它的方法

我做错了什么?我该如何修复它

谢谢

/**
 * Write a description of class Persn here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Person
{
String firstName;
String lastName;

public Person (String firstName, String lastName)
{
    this.firstName = firstName;
    this.lastName = lastName;
}

public String toString ()
{
   return lastName + ", " + firstName;
}
}





/**
 * Write a description of class Student here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Student extends Person
{
int gradeLevel;
private static int studentId = 0;

public Student (String firstName, String lastName, int gradeLevel)
{
    super(firstName, lastName);
    this.gradeLevel = gradeLevel;

    if (gradeLevel > 5 || gradeLevel < 0)
    {
        gradeLevel = 0;
    }

    studentId = studentId + 1;
}

public int getLevel()
{
    return gradeLevel;
}

public String toString ()
{
    return lastName + ", " + firstName + "\nGrade Level: " + gradeLevel + "\nID #: " + studentId;
}
}




/**
 * Write a description of class HTHSStudent here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class HTHSStudent extends Student
{
double gpa;

public HthsStudent (String firstName, String lastName, int gradeLevel, double gpa)
{
    super(firstName, LastName, gradeLevel);
    this.gpa = gpa;

    if (gpa > 5.0 || gpa < 1.0)
    {
        gpa = 0.0;
    }


}

public String toString()
{
    return lastName + ", " + firstName + "\nGrade Level: " + gradeLevel + "\nID #: " + studentId + "\nGPA: " + gpa;
}
}
/**
*在这里写一篇关于班级人员的描述。
* 
*@author(你的名字)
*@version(版本号或日期)
*/
公共阶层人士
{
字符串名;
字符串lastName;
公众人物(字符串名、字符串名)
{
this.firstName=firstName;
this.lastName=lastName;
}
公共字符串toString()
{
返回lastName+“,”+firstName;
}
}
/**
*在这里写一个班级学生的描述。
* 
*@author(你的名字)
*@version(版本号或日期)
*/
公营班级学生人数
{
智力水平;
私有静态int studentId=0;
公立学生(字串姓氏、字串姓氏、整数年级)
{
超级(名字,姓氏);
this.gradeLevel=gradeLevel;
如果(等级等级>5 | |等级等级<0)
{
等级等级=0;
}
studentId=studentId+1;
}
public int getLevel()
{
返回等级;
}
公共字符串toString()
{
返回lastName+“,“+firstName+”\n等级:“+gradeLevel+”\nID:“+studentId;
}
}
/**
*在这里写下HTHSStudent类的描述。
* 
*@author(你的名字)
*@version(版本号或日期)
*/
公共课HTHSS学生扩展学生
{
双gpa;
公共HthsStudent(字符串名、字符串名、整数级、双gpa)
{
超级(名字、姓氏、级别);
this.gpa=gpa;
如果(gpa>5.0 | | gpa<1.0)
{
gpa=0.0;
}
}
公共字符串toString()
{
返回lastName+“,“+firstName+”\n等级:“+gradeLevel+”\nID:“+studentId+”\nGPA:“+gpa;
}
}

您没有正确地将最后一个类大写。你有:

class HTHSStudent extends Student
{
double gpa;

public HthsStudent (String firstName, String lastName, int gradeLevel, double gpa)
应该是

class HTHSStudent extends Student
{
double gpa;

public HTHSStudent (String firstName, String lastName, int gradeLevel, double gpa)
或者更好:

class HthsStudent extends Student  {
    private double gpa;

    public HthsStudent (String firstName, String lastName, int gradeLevel, double gpa)
注意,对于Java标识符,大小写很重要


同样正如我在评论中所指出的,你还有另一个不相关的问题,那就是你的学生领域应该绝对是静态的。此字段对于每个学生对象都必须是唯一的,如果将其设置为静态,则它将成为类的属性,因此对于所有学生都是相同的。如果将其设置为静态以修复编译器错误,则修复了错误的错误。正确的解决方法是不要尝试在课堂外以静态方式引用它。

“问题是,java不喜欢我尝试的方式,并且不断告诉我我所做的是错误的,即使这正是我在学生课堂上所做的。”
——什么错误消息?什么问题?请问一个完整的问题。这个静态:
private static int studentId=0会从后面咬你。摆脱它。创造者让Java变得足够合理,可以告诉你它不喜欢什么,为什么不喜欢什么。