2016-10-27 1 views

Antwort

1

Ja, es ist erlaubt, da eine Unterklasse eine Partikularisierung der Vorfahrklasse ist.

Beispiel:

Lassen Sie uns den Fall betrachten, wenn wir eine class genannt Bird, eine andere genannt Sparrow und ein drittes Eagle. Sparrow und Eagle sind von Bird vererbt. Sparrows unterscheiden sich von Eagles sehr, aber sie sind Bird s. Also, wenn Sie ein Collection von Bird s aus irgendeinem Grund haben wollen, dann können Sie haben Eagle und Sparrow Objekte in diesem Collection zugleich, da sie noch Birds sind, wenn auch nur spezifischeBird s.

1

OOP-Prinzipien Zustand, dass man immer upcast; aber im Gegensatz zu Java mit sehr beschränkter Anzahl von primitiven Klassen, .Net Implementierung struct Typen deklarieren kann, sind einige von ihnen seltsam Gegenbeispiele mit Boxen:

TypedReference reference = new TypedReference(); 

// Compile time error here! Even if Object is the base type for all types 
Object o = (Object)reference; 

Technisch , TypedReference ist ein Object:

Object 
    ValueType 
    TypedReference 

Sie können leicht überprüfen:

Console.Write(typeof(TypedReference).BaseType.BaseType == typeof(Object) 
    ? "TypedReference derived from Object via ValueType" 
    : "Very strange"); 

aber um so Object Instanz dargestellt werden (über cast) sollte es verpackt werden, die nicht getan werden kann.

Verwandte Themen