【问题标题】:Problems with Parent and Child Classes父类和子类的问题
【发布时间】:2016-05-27 02:09:28
【问题描述】:

我正在尝试为 HthsStudent 类创建一个构造函数,它从 Student 类继承变量和状态。 (学生从 Person 类继承变量和状态。)

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

我做错了什么,我该如何解决?

谢谢!

/**
 * 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;
}
}

【问题讨论】:

  • "The problem is, java doesn't like the way I'm trying to do it, and keeps telling me that what I'm doing is wrong, even though it is exactly what I did in class Student." -- 什么错误信息?什么问题?请提出一个完整的问题。
  • 这个静态的:private static int studentId = 0; 会在后面咬你。摆脱它。
  • 创建者让 Java 足够合理地告诉你什么以及为什么它不喜欢某样东西。

标签: java parent-child bluej


【解决方案1】:

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

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 标识符,大小写很重要

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

【讨论】:

    猜你喜欢
    • 2015-09-25
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    相关资源
    最近更新 更多