从不同类的对象访问单个变量?

时间:2017-01-26 18:02:25

标签: java class oop methods

我有3节课; Person,PersonProgram(主要)和Date。日期类包含3个日,月和年变量。我正在尝试在Person类中创建一个方法,该方法返回一个字符串格式为firstname lastname middle initial day month year。因为firstname,lastname和middle initial是我所拥有的Person类的一部分

 return String.format("%s %s %s %s %s %s" this.firstname, this.lastname, this.middleinitial ... )

在这之后,是否有一种语法可以用来从Date类调用日,月的各个变量?我到目前为止只是尝试了“找不到符号”。我是否需要制作另一个方法,我的Date类以这种方式格式化Date,并从Person中的方法调用该方法?

4 个答案:

答案 0 :(得分:0)

我不知道我是否理解你想要的东西,但试试这个:

在您的Person类中:

Person(Date date) {
   this.date = date;
}

.
.

return String.format("%s %s %s %s" this.firstname, this.lastname, this.middleinitial, this.date.getFormatDate() )

并在你的日期类中:

Date {

.
.

public void getFormatDate() {
   return this.day + "/" + this.month + "/" + this.year;
}

}

最好使用Calendar和SimpleDateFormat格式化日期,而不是使用带有这些变量的Date类,但对于当前情况,我认为这没问题。

我希望这有帮助,绝对!

答案 1 :(得分:0)

如果日期是关于Person的某些内容,例如birthDate或hireDate,则每个实例上应该有另一个成员变量,就像firstName和lastName一样。

无需创建自己的日期类。使用LocalDate,Java 8及更高版本中内置的类表示仅限日期,没有时间和没有时区。

LocalDate ld = LocalDate.of( 2017 , Month.JANUARY , 23 );

然后使用DateTimeFormatter类生成表示其值的String。该类甚至可以自动本地化。

DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( Locale.CANADA_FRENCH );
String dateOutput = ld.format( f );

如果需要,您确实可以提取LocalDate的每一部分。

int y = ld.getYear();
int m = ld.getMonthValue();
int d = ld.getDayOfMonth();

为了构建这么长的文本,我不会使用String.format。使用与+运算符或StringBuilder / StringBuffer类的串联。

StringBuilder s = new StringBuilder();
s.append( fName ).append( " " ).append( dateOutput ) ;
…

答案 2 :(得分:-1)

尝试将Date类中的变量设为public,以便为它们创建getter。

有关getter和setter的信息,请参阅https://www.tutorialspoint.com/java/java_encapsulation.htm

答案 3 :(得分:-1)

Date date = new Date( ... );
return String.format("%s %s %s %s %s %s" this.firstname, this.lastname, this.middleinitial, date.getYear(), date.getMonth(), date.getDay() );