我知道重载方法/属性的访问符知名度都必须与基本方法/属性的相同或以上,我也知道接口成员的可视性公共默认。因此,如何以及为什么可以成员的可视性是私有的,当我们在一个类中明确实现的接口虽然这些私有方法可以通过铸造类对象实现的接口来访问?为什么在接口为什么不能在抽象类
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