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