为什么我的班级成员不能访问我的getter方法?

时间:2016-04-18 07:36:40

标签: java function class

我有这两个文件,personalinfo.java定义了personalInfo类,testpersonalinfo.java定义了这个类。当我尝试从testpersonalinfo.java访问我的getter方法时,我收到一个错误,即这些方法未定义。有谁能告诉我为什么?

personalinfo.java:

public class personalInfo {

    private String name;
    private String address;
    private int age;
    private long phoneNumber;

    personalInfo(){
        name = "Default Name";
        address = "Default Address";
        age = 100;
        phoneNumber = 0000000000;
    }

    personalInfo(String nam, String add, int ag, int phone){
        name = nam;
        address = add;
        age = ag;
        phoneNumber = phone;
    }

    public String getName(){
        return name;
    }
    public String getAddress(){
        return address;
    }
    public int getAge(){
        return age;
    }
    public long getPhoneNumber(){
        return phoneNumber;
    }

    public void setName(String nam){
        this.name = nam;
    }
    public void setAddress(String add){
        this.address = add;
    }
    public void setAge(int ag){
        this.age = ag;
    }
    public void setPhoneNumber(long phone){
        this.phoneNumber = phone;
    }
}

testpersonalinfo.java:

import java.util.Scanner;

public class personalInfoExample {

    public static void main(String[] args){

        personalInfo[] pers = new personalInfo[3];
        Scanner input = new Scanner(System.in);

        String inName;
        String inAddress;
        int inAge;
        long inPhoneNumber;

        for(int i=0; i<3; i++){
            pers[i] = new personalInfo();
            System.out.printf("Please input the name for person %s: ", i );
            inName = input.nextLine();
            pers[i].setName(inName);
            System.out.println(pers[i].getName);
            System.out.printf("Please input the address for person %s: ", i );
            inAddress = input.nextLine();
            pers[i].setAddress(inAddress);
            System.out.println(pers[i].getAddress);
            System.out.printf("Please input the age for person %d: ", i );
            inAge = input.nextInt();
            pers[i].setAge(inAge);
            input.nextLine();
            System.out.println(pers[i].getAge);
            System.out.printf("Please input the phone number for person %d, without dashes included (ex. 1112223333): ", i );
            inPhoneNumber = input.nextLong();
            pers[i].setPhoneNumber(inPhoneNumber);
            System.out.println(pers[i].getPhoneNumber);
            input.nextLine();
        }

    input.close();

    }
}

3 个答案:

答案 0 :(得分:1)

getter是函数,而不是字段;所以要打电话给他们,你需要使用()(例如:pers[i].getAdress()

此外,类名应该大写,但它并不重要(只是让它更容易阅读。

正如有人在评论中建议的那样,您应该使用IDE,以防您不这样做。 IDE将指出您所遇到的明显的小错误(包括错误和常规错误),并为您节省很长时间。如果您不知道从哪里开始,请搜索 Eclipse Netbeans 。 (Eclipse是我个人的最爱)。

编辑:我刚刚看到Eran评论了您的错误的答案,所以如果他将其作为答案发布,请接受他的第一个。

答案 1 :(得分:0)

在您尝试访问sysout但未getter的所有()语句中

请试试这个

 System.out.println(pers[i].getName()); //change all your getters

而不是

 System.out.println(pers[i].getName);

因为getName()是一个方法而不是一个变量所以总是需要在方法名称之后使用开关大括号()您定义或致电)

请更改所有这些方法(引发编译时错误的方法)。

System.out.println(pers[i].getName);
System.out.println(pers[i].getAddress); //all these lines are causing of Compile time error.
System.out.println(pers[i].getAge);
System.out.println(pers[i].getPhoneNumber);

答案 2 :(得分:0)

如果您不想使用getter方法访问class定义的实例变量(非私有变量),则可以调用实例变量名直接在像

这样的实例对象上
pers[i].name 

有关变量访问控制的更多信息,请参阅java-doc