2012-03-22 65 views
0

超类的源代码访问私人诠释在子类中

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不可见,因为它是私人的。超级班的日子里没有任何安装者,但是有一个getter。二传手应该是什么样子?此外,我的子类构造器应该是什么样子?

子类构造器

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语言之间存在一些差异。你在使用哪一个? – 2012-03-22 23:36:47

+0

感谢您的快速响应。我正在使用Java。 – Megatron 2012-03-22 23:43:41

回答

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而不是抛出异常。只是一个想法!