java - Java 对象结构方面的帮助

标签 java class accessor mutators

我必须编写一个封装类(class)的类。假设一门类(class)具有三个属性:代码名称、描述和学分。我必须包含构造函数、访问器和修改器以及方法 toStringequals

作为本次作业的一部分,我必须编写一个客户端类来测试 Course 类中的所有方法。我相信我已经完成了类(class)类(class),但在编写客户端时遇到困难。对于我尝试的所有操作,我收到错误“无法从静态上下文引用非静态变量”。我做错了什么?

好的,我已经重写了我的代码。我仍然不确定如何让更改器(mutator)方法发挥作用,也不知道如何要求用户输入来设置新类(class)的所有值,然后在使用访问器和更改器(mutator)方法时将它们输出到屏幕。请帮助我。谢谢

public class ManualClass 
{
public static void main(String[] args) 
{
    Course compSci = new Test2().new Course("Comp Sci","IT1101",3.0);
    System.out.println(compSci+ "\n");


    Course dave = new Test2().new Course("Hist1111","World History",4.0);     
    System.out.print(dave.getCourseCode() + " " + dave.getDescription() 
                + " " + dave.getCreditHours() + "\n");
}

public class Course 
{
//Instance Variables
private String courseCode;
private String description;    
private Double creditHours;

public Course() 
{
    courseCode = null;
    creditHours = 0.0;
    description = null;
}

//Constructor
public Course(String courseCode, String description, double creditHours) 
{    
    this.courseCode = courseCode; 
    this.description = description;
    this.creditHours = creditHours;
}

//Accessors (Getters)
public String getCourseCode() 
{
    return courseCode;
}

public String getDescription()
{
    return description;
}

public double getCreditHours()
{
    return creditHours;
}

//Mutators (Setters)
public void setCourseCode(String CourseCode)
{
 this.courseCode = courseCode;
}

public void setDescription(String description)
{
 this.description = description;
}

public void setCreditHours(double creditHours)
{
 this.creditHours = creditHours;
}

    // toString Method
    public String toString()
    {
        DecimalFormat creditsFormat = new DecimalFormat ("#0.0");

        return "Code: " + courseCode + "; Description: " 
               + description + "; creditHours: " 
               + creditsFormat.format(creditHours);
    }

    // Equals Method
    public boolean equals(Object o)
    {
        if (!(o instanceof Course))
            return false;

        else
        {
            Course objCourse = (Course) o;
            if (courseCode.equals(objCourse.courseCode)
                && description == objCourse.description
                && creditHours == objCourse.creditHours)

                return true;

            else
                return false;
        }
    }
}
}

最佳答案

由于Course是一个非静态内部类,因此您需要使用Manual_Class实例创建Course的合格实例:

Course csi = new Manual_Class().new Course("CSI", "Comp Sci", 3.0);

或者,您可以将 Course 的类声明移出顶级类 Manual_Class 的范围。在这种情况下,您可以使用当前的语法。

此外,每个文件只能有一个 public 类声明,它应该是您的顶级类。您可以从 Course 类声明中删除该关键字。

关于java - Java 对象结构方面的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385093/

相关文章:

java - 动态线程创建可能出现的问题或安全方法

Java并发: Can I create a pool using worker thread

android - 制作字体助手类

c# - Accessor没有实现?

java - "HH:MM:SS"中的秒数

jquery - 使用 jquery 获取具有分配的多个类的元素的类值

python - 如何使枚举指向一个类

typescript - 私有(private)二传手 typescript ?

c++ - 引用指针调用成员函数

java - 未在 JMS listner 非 Activity 类 android 中获取应用程序上下文