2017-01-17 1 views
0

私はJavaでOOPを学んでいます。私は別のクラスからデータにアクセスするゲッターを作成する方法を知りたいのですか?私は名前と生年月日を持つ人を作成するプログラムを持っています。だから、私は3つのクラス、PersonProgram(メイン)、People、Dateを持っています。 Peopleクラスには、名前、姓、生年月日を含むフルネームのコンストラクタがあります。 Dateクラスには、日、月、年の3つの整数を含む日付のコンストラクタとセッタがあり、その後、それらを文字列形式にフォーマットするメソッドがあります。だから、私のメインプログラムでは、人物の作成に関する情報を印刷するオプションがあります。Javaの別のクラスにアクセスするゲッターを作る

public Date getBirthDate() { 
    return birthDate; 
} 

が、私はそれが私のDateクラスにtoStringメソッドからフォーマットされた日付を取得したい:だから、私は私の人々のクラスに

Person[selection].getBirthDate; 

を持つ人々のゲッターとゲッターを呼び出すことです。 getBirthDateゲッターの中からtoStringメソッドを呼び出すことはできますか?あなたがあなたの主なメソッドから呼び出すことができます

+0

メソッドが 'String'を返す限り、 –

+0

'public String getBirthDate(){return birthDate.toString(); } ' – 4castle

+0

オブジェクト指向の用語では、別のオブジェクトを使用して値を返すことを委任という。それは奨励されていなければ、まったく受け入れられます。 – 4castle

答えて

0

はい、ここでtoString()を使用するのが適切です。 In Dateクラス:

@Override 
public String toString(){ 
    return year + "/" + month + "/" + day; 
} 

そして、PeopleクラスではDateオブジェクトの代わりにStringを返します。とにかく、DateをString全体として読みたいだけなので、このようにすれば、メソッドメソッドを清潔にすることができます。

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

どこかで初期化が行なわれていないのでしょうか?私はあなたのコードを持っていますが、プログラムを実行すると、日付は次のように16進数の値を返します:Date @ 55f96302 と私のメイン:System.out.println( "Birth Date:" + people [選択] .getBirthDate()); –

+0

Dateオブジェクトを返すか、DateクラスのtoString()メソッドを適切にオーバーライドしていません。 Objectの標準文字列表現は、クラス名+ "@" +メモリアドレスです。これがあなたのものです。あなたはgetBirthDate()メソッドをString(私のコードのような)を返すようにし、Dateクラスであなたに与えたtoString()メソッドを実装しなければなりません。もちろん、変数 "day"、 "month"などを名前を変更して変更する必要があります。お役に立てれば! – mumpitz

0

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

このtoStringメソッドは、人のインスタンスにembeeded Dateクラスのインスタンスで呼び出すことができますので、あなたがしたい文字列を返します。

関連する問題