Java:另一个类中没有显示的方法

时间:2013-10-11 16:50:26

标签: java class methods

我正在尝试为java中的一个类做一些功课 我要做的部分是在homework.class中创建一个扩展.name类

的新人

名称等级

public class Homework extends Object implements Comparable<Homework> {

private int id;
private Name name;
private int section;
private Files files;
private int dateSubmitted;  

...... hwk类的一部分

public Homework(String first, String last, int section, int dateSubmitted){ //fix me
    this.id = nextAvailableUid();
    this.section = section;
    this.dateSubmitted = dateSubmitted;     
    this.name.Name(first,last); //error is here in the Name call telling me Name is not a method of Name
}

我得到的错误是在Name中,它告诉我在Name类中创建一个方法Name,我知道它有.... 从name.class看到的施加

public class Name implements Comparable<Name>{

private String Fname;
private String Lname;


    public  Name(String first, String last) {
    this.Fname = first;
    this.Lname = last; //init the name

}
 }

3 个答案:

答案 0 :(得分:8)

使用new运算符调用构造函数:

this.name = new Name(first,last);

这是Java tutorial on the subject

答案 1 :(得分:0)

this.name.Name(first,last);查看Homework类的name变量。 name变量是Name类的一个实例。

编译器然后在Name类中查找名为Name的方法,该方法需要2个字符串。该方法可以是实例方法,也可以是静态方法。

由于没有这样的方法,您会收到错误。

按照惯例,方法以小写字母开头,类以大写字母开头。这个惯例非常重要,因为它可以帮助您了解什么是什么。每个类还至少有一个构造函数(如果你没有编译器为你创建一个)。构造函数与类具有相同的名称(命名约定内容的一部分)。查看名称类,有一个带两个字符串的构造函数。

要调用构造函数,必须使用“new”运算符“eg。this.name = new Name(first, last);

答案 2 :(得分:0)

要添加@rgettman提供的正确答案,您需要创建一个新的Name对象,并使用您已经创建的构造函数执行此操作:public Name(String first, String last)

在Java(以及许多其他语言)中,您可以使用new执行此操作。所以你只需说

new Name(first,last);

通过传入firstlast引用的任何字符串来创建该对象。

但是创建一个新的Name是不够的;你需要能够做它的东西。所以你将它分配给引用this.name,所以现在Homework有一个name成员,它引用了内存中新创建的Name对象。

因此,使用homework对象,您可以执行homework.getName().getFirst();

之类的操作

当你写this.name.Name(first,last);时,就像说Homework有一个name字段,其中包含一个名为Name的方法,您正在传递first和{{ 1}} ......当然不是你的意思。

您不必花很长时间了解构造函数的工作原理。坚持下去吧!