2012-03-22 3 views
0

スーパークラスのソースコードへのアクセスプライベートサブクラスのint

public class Date { 
private int month; 
private int day; 
private int year; 


public Date() { 
setMonth(1); 
**day = 1;** 
setYear(1900); 
} 

public Date(int month, int day, int year) { 
this.setMonth(month); 
this.**day** = day; 
this.setYear(year); 
} 

月と年が正常に動作します。しかし、私が日を使用しようとすると、varは非公開であるため表示されません。スーパークラスにはセッターはありませんが、ゲッターがあります。セッターはどのように見えますか?さらに、私のサブクラスのコンストラクタはどのように見えますか?

サブクラスコンストラクタ

public EDate(int month, int day, int year) 
{ 

this.setMonth(month); 
day = getDay(); 
this.setYear(year); 
} 

サブクラス日セッター

public void setDay(int newInt) { 
if (isGooddDate(getMonth(), newInt, getYear())==true) 
{  
newInt = this.getDay(); 
} 

すべてのヘルプははるかに高く評価されます!

+1

OO言語にはいくつかの違いがあります。あなたはどちらを使っていますか? –

+0

迅速な対応をありがとう。私はJavaを使用しています。 – Megatron

答えて

0

まず、Dateクラスをサブクラス化する必要があるとは思われません。その理由は、何が起こったとしても、日付機能は同じままであるためです。したがって、サブクラスのコンストラクタは必要ありません。

そして限り日付セッターが行くように、あなたは正しい方向に向かっている:あなたのクラスは、あなたが実際よりよい解決策を書くことができ、時間のサポートを備えている場合

public void setDate(int dateValue) { 
    if(isDateValid(dateValue)) { 
     date = dateValue; 
    } else { 
     throw new Exception("Invalid date"); 
    } 
} 

。日付が何であっても、日付の値を時刻に変換します。保存中は、時刻を適切な日付に変換します。これは、組み込みのDateTimeクラスがどのように動作するかを示します。

たとえば、2006-16-80を保存すると、例外をスローするのではなく2007-06-19として保存されます。ちょっとした考え!

関連する問題