C # Inheritance
L'ereditarietà è una programmazione orientata agli oggetti è uno dei concetti più importanti. Inheritance ci permette di definire una classe basata su un'altra classe per definire una classe, che rende la creazione e la gestione di applicazioni molto più facile. Ma anche favorevole alla riutilizzare il codice e ridurre i tempi di sviluppo.
Quando si crea una classe, i programmatori non hanno bisogno di completamente ri-scrivere nuovi dati membro e funzioni membro, avete solo bisogno di progettare una nuova classe che eredita i membri esistenti della classe può essere. Laclasse di baseesistente viene chiamata una classe, la nuova classe si chiamaclasse derivata.
Realizzazione dell'idea di ereditàappartenenza (IS-A) relazione.Ad esempio, un mammiferoappartiene (IS-a) gli animali, i cani appartenenti a (IS-A)dei mammiferi, e quindiappartengono alcane(is-a)gli animali.
Base e classi derivate
Una classe può essere derivata da più di una classe o interfaccia, il che significa che può ereditare classi base multiple o interfacce di dati e funzioni.
Creare una classe derivata in C # sintassi è la seguente:
<Acess-specifier> class <BASE_CLASS> { ... } classe <Derived_Class>: <BASE_CLASS> { ... }
Supponiamo, vi è una forma di classe di base, che è il rettangolo classe derivata:
using System; namespace InheritanceApplication { Forma di classe { setWidth public void (int w) { width = w; } setHeight public void (int h) { height = h; } protetta width int; Altezza protetta int; } // Classe derivata classe Rectangle: Forma { public int getArea () { tornare (larghezza * altezza); } } classe RectangleTester { static void Main (string [] args) { Rettangolo Rect = new Rectangle (); Rect.setWidth (5); Rect.setHeight (7); // Area di stampa della Console.WriteLine oggetto ( "Superficie totale: {0}", Rect.getArea ()); Console.ReadKey (); } } }
Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:
Superficie totale: 35
Inizializzare la classe di base
classe derivata eredita variabili e metodi membro della classe di base. Pertanto, l'oggetto padre deve essere creato prima un oggetto sottoclasse è stato creato. È possibile inizializzare la classe padre nella lista di inizializzazione membro.
Il seguente programma illustra questo punto:
using System; namespace RectangleApplication { classe Rectangle { // Variabili membro protetto lunghezza doppia; protetta larghezza doppia; Rettangolo pubblico (doppia L, doppia w) { lunghezza = l; width = w; } doppia getArea pubblico () { tornare lunghezza larghezza *; } Mostra public void () { Console.WriteLine ( "Lunghezza: {0}", di lunghezza); Console.WriteLine ( "width: {0}", di larghezza); Console.WriteLine ( "Formato: {0}", getArea ()); } } // Classe Rectangle End Classe tavolo: Rectangle { doppio costo privato; Tavolo pubblico (doppia L, doppia w): base (l, w) {} doppia GetCost pubblico () { doppio costo; costo = getArea () * 70; tornare costo; } Mostra public void () { base.Display (); Console.WriteLine ( "Costo: {0}", GetCost ()); } } classe ExecuteRectangle { static void Main (string [] args) { Tavolo t = new tavolo (4.5, 7.5); t.Display (); Console.ReadLine (); } } }
Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:
Lunghezza: 4,5 Larghezza: 7.5 Area: 33.75 Costo: 2362,5
C # ereditarietà multipla
C # non supporta l'ereditarietà multipla.Tuttavia, è possibile utilizzare l'interfaccia per ottenere l'ereditarietà multipla. Il seguente programma illustra questo punto:
using System; namespace InheritanceApplication { Forma di classe { setWidth public void (int w) { width = w; } setHeight public void (int h) { height = h; } protetta width int; Altezza protetta int; } // Classe Base PaintCOST interfaccia pubblica PaintCOST { int getCost (area int); } // Classe derivata classe Rectangle: Forma, PaintCOST { public int getArea () { tornare (larghezza * altezza); } public int getCost (int zona) { zona di ritorno * 70; } } classe RectangleTester { static void Main (string [] args) { Rettangolo Rect = new Rectangle (); int zona; Rect.setWidth (5); Rect.setHeight (7); Area = Rect.getArea (); // Area di stampa della Console.WriteLine oggetto ( "Superficie totale: {0}", Rect.getArea ()); Console.WriteLine ( "Paint costo totale: $ {0}", Rect.getCost (area)); Console.ReadKey (); } } }
Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:
Superficie totale: 35 Vernice Costo totale: $ 2450