我知道重載方法/屬性的訪問符知名度都必須與基本方法/屬性的相同或以上,我也知道接口成員的可視性公共默認。因此,如何以及爲什麼可以成員的可視性是私有的,當我們在一個類中明確實現的接口雖然這些私有方法可以通過鑄造類對象實現的接口來訪問?爲什麼在接口爲什麼不能在抽象類
public interface IRocker
{
string RockOff(string str);
}
public abstract class AmAbstract
{
public abstract string SomeMethod(string str);
}
class Program : AmAbstract, IRocker
{
static void Main(string[] args)
{
new Hello().RockU();
Console.ReadKey();
}
string IRocker.RockOff(string str)
{
return str;
}
public override string SomeMethod(string str)
{
return str;
}
}
public class Hello
{
public void RockU()
{
Console.WriteLine(((IRocker)(new Program())).RockOff("Damn"));
Console.WriteLine(((AmAbstract)(new Program())).SomeMethod("lalalalala"));
}
}
'Console.WriteLine(((IRocker)(新計劃()))RockOff( 「該死」));'聲明顯示我們最終訪問班'Program'的私人方法。我的問題是爲什麼我們無法像使用接口方法那樣隱藏抽象方法的可見性?爲什麼我們能夠通過接口訪問私有方法?任何幫助將不勝感激。
不要急於接口,如果沒有要求,堅持抽象類。 – umlcat 2012-07-12 20:25:25
我建議剛好相反,使用接口,直到你絕對必須使用抽象類。接口使實現更清晰,但抽象類有時很方便。 – jpe 2012-07-13 05:57:13