我有代碼看起來像這樣:我可以讓派生類在Java中從其基類繼承派生成員嗎?
public class A
{
public void doStuff()
{
System.out.print("Stuff successfully done");
}
}
public class B extends A
{
public void doStuff()
{
System.out.print("Stuff successfully done, but in a different way");
}
public void doMoreStuff()
{
System.out.print("More advanced stuff successully done");
}
}
public class AWrapper
{
public A member;
public AWrapper(A member)
{
this.member = member;
}
public void doStuffWithMember()
{
a.doStuff();
}
}
public class BWrapper extends AWrapper
{
public B member;
public BWrapper(B member)
{
super(member); //Pointer to member stored in two places:
this.member = member; //Not great if one changes, but the other does not
}
public void doStuffWithMember()
{
member.doMoreStuff();
}
}
然而,這段代碼有問題。我在兩處存儲了對成員的引用,但如果其中一個發生了變化,另一個則不會發生,則可能會出現問題。我知道在Java中,一個繼承的方法可以將其返回類型(也可能是參數,但我不確定)縮小到派生類。田地也是如此嗎?
不一定。您可以根據需要將包裝器泛化爲很多層,但如果您正在進行這種編碼,則可能會錯誤地對域進行建模。 – Jherico 2010-05-11 19:16:28
對不起,我混淆了我過去的經歷,我不想將二級課程泛化爲可讀性問題。是的,一個人願意讓'BWrapper'通用它會正常工作。 – doublep 2010-05-11 19:44:06
這個語法是什麼意思? '公衆班'?我只看過類型參數_after_標識符 –
Eric
2010-05-14 06:24:38