1: Was ist Polymorphismus?
Mehrere Formen, d. h. verschiedene Objekte reagieren unterschiedlich auf dieselbe Operation.
Zweitens: Mehrere Hinweise zu abstrakten Klassen
1. Abstrakte Klassen werden mit abstrakten
geändert. 2. Abstrakte Methoden können nur in abstrakten Klassen
gefunden werden 3. Abstrakte Klassen können nicht instanziiert werden
4. Abstrakte Methoden haben keinen Methodenkörper
5. Abstrakte Klassen können keine statischen oder versiegelten Klassen sein
6. Unterklassen müssen wiederholt geschrieben werden alle abstrakten Methoden der übergeordneten Klasse, es sei denn, die Unterklasse ist ebenfalls eine abstrakte Klasse
7. In der abstrakten Klasse können gewöhnliche Methoden vorhanden sein
8. In der abstrakten Klasse kann es Konstruktoren geben
9. Die abstrakte Methode in einer abstrakten Klasse besteht darin, die Methodenform der Unterklasse einzuschränken.
Drei: „Instantiierung“ abstrakter Klassen
Obwohl die abstrakte Klasse selbst nicht durch new instanziiert werden kann, kann sie das Referenzobjekt auf das reale Objekt der Unterklasse verweisen, das auch aufgerufen werden kann Indirektion Instanziieren.
Person als übergeordnete Klasse
public abstract class Person{ public int Age { get; set; } public string Name { get; set; } public Person(int age,string name) { this.Age = age; this.Name = name; } public abstract void Say(); public void Eat() { Console.WriteLine("我是父类"); } }
Studentenklasse erbt Person
public class Student:Person{ public Student(string name,int age){ public Student(int age, string name):base(age,name) { this.Age = age; this.Name = name; } public override void Say() { Console.WriteLine("子类说话"); } public void Eat() { Console.WriteLine("我是子类"); } }}
Wenn das übergeordnete Klassenobjekt auf das reale Objekt der Unterklasse zeigt, zuerst die Unterklasse geht Der Konstruktor der übergeordneten Klasse übergibt dann den Konstruktor der Unterklasse und weist seinen Eigenschaften Werte zu. ,
Person p = new Student(18, "张宇"); p.Say(); //只有这一种情况,父类变量指向子类对象,调用的是子类的方法, //符合多态,父类和子类方法同名调用的是子类的方法 p.Eat(); //如果没有方法没有发生关系,则默认调用父类的方法。 Student stu = (Student)p; stu.Eat(); //如果要调用子类的特有的方法,需要进行类型转换,在java中称为,向下转型 Console.ReadKey();
Das obige ist der detaillierte Inhalt vonImplementierung von Polymorphismus in abstrakten Klassen in .NET. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!