【问题标题】:Display class objects from a class method显示类方法中的类对象
【发布时间】:2013-02-13 01:15:57
【问题描述】:

我创建了 Person 类,它由 Student 和 Employee 类扩展(由其他 Employee 类型的类扩展)。人员类如下所示:

String name;
 int ssn;
 int age;
 String gender;
 String address;
 String PNumber;
 static int count;

//empty constructor
public Person(){
    count++;
}

//print count
public static void printCount(){
    System.out.println("The number of people is: "+ count);
}

//constructor with name
public Person(String name){
    this.name = name;
    count++;
}

/*constructor to create default person object*/
public Person(String name, int ssn, int age, String gender, String address, String PNumber)
{

    this.name = name;
    this.ssn = ssn;
    this.age = age;
    this.gender = gender;
    this.address = address;
    this.PNumber = PNumber;
    count++;
}

我目前正在尝试创建一个方法,如果他们是性别 =“男性”,将显示所有人员。我有:

//display Males
public void print(String gender){ 
    if(this.gender.contentEquals(gender)){
        //print out person objects that meet this if statement
    }
}

我不确定如何在方法中引用对象(学生和员工都是人)来返回它们。而且我也不知道怎么在main方法中引用这个方法。我不能使用 Person.print,但如果我使用

Person james = new Person(); 

然后使用

james.print("Males"); 

我只返回 james(并且该方法在这种情况下没有意义)。

任何帮助表示赞赏。

【问题讨论】:

    标签: java class inheritance methods


    【解决方案1】:

    首先要把print方法做成静态方法。它独立于每个单独的 Person 对象,因此将其设为静态将允许您在 main 方法中将其调用为

    Person.print("Male");
    

    要在 print 方法中引用 Person 对象,您需要将一组 Person 对象作为参数传递给它。您应该将 Person 的所有实例保存在一个数组中,并在调用它时将其传递给 print 方法。那么print方法就可以了

    public static void print(String gender, Person[] people) {
        for(Person x : people)
            if (x.gender.equals(gender))
                //print the person
    }
    

    有了这个修改,你应该从 main 方法调用它

    Person.print("Male", people);
    

    其中 people 是保存所有 Person 对象的数组。

    【讨论】:

    • 非常感谢。我有一个后续评论/问题。你能解释一下(人 x:人)吗?我有点初学者。它是否创建了名为 people 的 Person 类的实例?我也曾一度将 print 方法设为静态,但我无法使用性别,因为它不是静态变量。
    • 不管怎样,我现在已经掌握了窍门。再次,非常感谢你
    • 没问题。 for(Object variableName : collection) 是遍历集合的另一种方法。基本上,这意味着对于集合(人员)中的每个对象(程序中的人员)实例,将 variableName 设置为等于它并执行以下块中的任何操作。它被称为 foreach 循环,您可以阅读对它的更好解释here.
    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 2014-08-12
    • 2014-08-15
    • 2017-12-14
    • 2020-08-16
    • 2016-06-23
    • 1970-01-01
    • 2013-04-16
    相关资源
    最近更新 更多