2012-03-22 1 views
0

Superclass исходный кодДоступ к Private 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); 
} 

месяц и год работает нормально, потому что я могу использовать setMonth и setYear в моем подклассу. Однако, когда я пытаюсь использовать день, он говорит, что 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 в первую очередь. Причина в том, что функциональность Date останется такой же, независимо от того, что произойдет. Поэтому нет необходимости в конструкторе подкласса.

И насколько дата сеттер идет, вы идете в правильном направлении:

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

Если ваш класс имеет поддержку времени вы могли бы на самом деле написать лучшее решение. Преобразуйте значение даты вовремя, независимо от даты. При хранении преобразуйте время в соответствующую дату. Так работает встроенный класс DateTime.

например: если вы храните 2006-16-80, он будет храниться как 2007-06-19, а не исключает исключение. Просто мысль!