は、なぜ私は、クラスAまたはBのいずれかから年齢メソッドにアクセスすることはできませんか?私はそれが保護されたメソッドだと思った、派生クラスのインスタンスはそれを使用できる必要がありますか?派生クラスの使用による親メソッド
class Program
{
public static void Main(string[] args)
{
}
public static void Test(A test)
{
A a = new A();
B b = new B();
Console.WriteLine(a.Age());
Console.WriteLine(b.Age());
}
}
public class A
{
public virtual string Name { get { return "TestA"; } }
protected string Age() { return "25";}
}
public class B : A
{
public override string Name { get { return "TestB"; } }
public string Address { get; set; }
}
---ジョンSkeet--によって示唆されるように保護
public class B : A
{
public override string Name { get { return "TestB"; } }
public string Address { get; set; }
public void Testing()
{
B a = new B();
a.Age();
}
}
保護された修飾子を使用すると、保護されたメソッドにアクセスすることはできません。 –
派生クラスのインスタンスは保護されたメソッドにアクセスできますが、この場合は、それらのクラスでは何もしなくてはなりません。そのため、パブリックメソッドと変数だけがそこからアクセスできます。クラスBのインスタンスを使用してAgeメソッドを使用する場合は、それをpublicとしてオーバーライドして実装を行います。 –