ich den folgenden Code haben:C# nicht mehr geschützt Methode aufrufen aus void main
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
abstract class parent
{
public abstract void printFirstName();
protected virtual void printLastName()
{
Console.WriteLine("Watson");
}
protected void printMiddlename()
{
Console.WriteLine("Jane");
}
}
class child: parent
{
public override void printFirstName()
{
Console.WriteLine("Mary");
}
protected override void printLastName()
{
Console.WriteLine("Parker");
}
public void getMiddleName()
{
printMiddlename();
}
}
class Program: child
{
static void Main(string[] args)
{
child ch = new child();
ch.printFirstName();
ch.getMiddleName();
//ch.printLastName();
Console.Read();
}
}
}
Dieser Code wird ordnungsgemäß ausgeführt und druckt Mary Jane
Allerdings, wenn ich Kommentar- ch.printLastName();
es showscompile Fehler:
Warum kann mein Programm Klasse Aufruf geschützte Methode von Child-Klasse? vor allem, wenn die Child-Klasse kein Problem beim Aufruf der geschützten Methode (printMiddleName)
der Elternklasse hat?
Diese Methode ist geschützt, ist nur für Kinder aus der Unterklasse verfügbar. Tippfehler ? –
Kannst du erklären, was du _expect_ 'protected' hast, um tatsächlich für dich zu tun? Ich denke, Sie haben ein Missverständnis dessen, was es tut. –
Dies ist grundlegende Dinge. Hier ist die Seite zu [Barrierefreiheitsebenen] (https://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx), die Ihnen die Definition für 'protected' mitteilt. –