在JAVA中创建访问另一个类的getter

在JAVA中创建访问另一个类的getter,java,class,oop,object,Java,Class,Oop,Object,我正在学习Java中的OOP,我想知道如何创建一个getter来访问单独类中的数据?我有一个程序,用名字和出生日期创造人。所以我有三门课:个人课程(主要)、人和日期。People类具有全名的构造函数,包括名字、姓氏和出生日期。Date类具有日期的构造函数和设置器,其中包括日期、月份和年份的3个整数,然后是将它们格式化为字符串格式的方法。所以在我的主程序中,我有一个选项,可以打印出任何人被创造出来的信息。因此,我称之为有能力的人 Person[selection].getBirthDate; 在

我正在学习Java中的OOP,我想知道如何创建一个getter来访问单独类中的数据?我有一个程序,用名字和出生日期创造人。所以我有三门课:个人课程(主要)、人和日期。People类具有全名的构造函数,包括名字、姓氏和出生日期。Date类具有日期的构造函数和设置器,其中包括日期、月份和年份的3个整数,然后是将它们格式化为字符串格式的方法。所以在我的主程序中,我有一个选项,可以打印出任何人被创造出来的信息。因此,我称之为有能力的人

Person[selection].getBirthDate;
在我的人际关系课上,最重要的是:

public Date getBirthDate() {
    return birthDate;
}

但我希望它从date类中的toString方法检索格式化日期。我可以从getBirthDate getter内部调用toString方法吗?

您可以从主方法调用:

person[index].getBirthDate().toString();

这将返回您想要的字符串,因为toString方法将在person实例中的日期类实例上调用。

是的,在这里使用toString()是合适的。日期类:

@Override
public String toString(){
    return year + "/" + month + "/" + day;
}
在People类中,返回字符串而不是日期对象。这样,您就有了一个干净的方法接口,因为您只希望将日期作为整个字符串读取:

public String getBirthDate() {
    return birthDate.toString();
}

只要用面向对象的术语使方法返回
String
公共字符串getBirthDate(){return birthDate.toString();}
,使用另一个对象返回值就称为委托。如果不鼓励的话,这是完全可以接受的。顺便说一下,避免将类命名为与Java捆绑的普通类相同的名称。在本例中,
Date
就是这样一个名称。而且,该类现在是遗留类,所以不要使用它;在一个真正的应用程序中,你可以使用类作为生日字段,而不是构建自己的类
LocalDate.of(2017年1月23日)
我是否可能在某个地方缺少初始化?我的代码和你的一样,但当我运行程序时,日期返回某种十六进制值,如下所示:Date@55f96302在我的main中:System.out.println(“出生日期:+people[selection].getBirthDate());您正在返回一个日期对象,或者没有正确重写Date类的toString()方法。对象的标准字符串表示形式是类名+“@”+内存地址。这就是你得到的。您必须使getBirthDate()方法返回一个字符串(就像在我的代码中一样),并实现我在Date类中为您提供的toString()方法。当然,您必须将变量“day”、“month”等更改为您命名的名称。希望这有帮助!