Sommario
Cos'è il polimorfismo in c#
Il polimorfismo proviene da due parole greche: poli E Morph. La parola poli Qui sta per molti, e Morph sta per le forme. È la capacità dell'oggetto nella programmazione di acquisire forme diverse.
Il polimorfismo consente di trattare oggetti di classi distinte come provenivano dalla stessa classe. Questo può essere fatto usando il concetto di eredità, in quanto consente alle classi derivate di prendere o ereditare le proprietà della classe base.
Tipi di polimorfismo in C#
Il polimorfismo può essere classificato in due tipi in base a quando si verifica:
Metodo sovraccarico
Il sovraccarico del metodo può definire più metodi con lo stesso nome ma contenere parametri diversi. Il compilatore decide il metodo che verrà chiamato in base agli argomenti forniti al metodo. Usando il sovraccarico del metodo, possiamo svolgere attività simili ma hanno parametri di input diversi.
Metodo prevalente
Metodo Prevalere in C# è una tecnica che consente a una classe derivata di fornire la propria implementazione di un metodo già fornito dalla sua classe di base. Il metodo prevalente è proprio come la funzione virtuale di c++. Quando un metodo in una classe derivata ha lo stesso nome, lo stesso tipo di ritorno e gli stessi parametri di un metodo nella sua classe base, si dice che il metodo nella classe derivata sovrascrive il metodo nella classe base.
Nel polimorfismo, il metodo di base sovrascritto dovrebbe essere virtuale, astratto o sovraccarico. I metodi di sovraccarico implementano i membri della classe base esistenti in un modo nuovo. Il metodo di prevalenza si ottiene utilizzando le parole chiave virtuali e sovraccarichi.
Esempi di polimorfismo in C#
Di seguito è riportato un codice di esempio che spiega entrambi i metodi prevalere e sovraccarico in C#:
Esempio 1: sovraccarico del metodo
Qui, nell'esempio seguente, abbiamo definito più metodi in una singola classe. Tutti questi metodi condividono lo stesso nome ma contengono parametri diversi.
usando il sistema;Il codice sopra fornisce due numeri da sommare e dimostra Metodo sovraccarico in c#. IL Calculatesum Il metodo è sovraccarico per accettare due parametri interi e due doppi parametri, rispettivamente.
Il metodo principale crea un'istanza della classe del programma e chiama il metodo Calculatesum due volte, una volta con due argomenti interi e una volta con due doppi argomenti.
Quando il programma è eseguito, stampare la somma dei due numeri passati al Calculatesum Metodo usando l'interpolazione della stringa per creare il messaggio di output. Il seguente output può essere visto sulla console:
Esempio 2: metodo prevalente
Questo esempio dimostra il concetto di metodo prevalente, in cui una classe derivata può fornire la propria implementazione di un metodo ereditato dalla sua classe base.
usando il sistema;Ecco una classe di base che si chiama Classe di forma. La classe di forma contiene un metodo virtuale chiamato Disegno. Qui, una parola chiave virtuale è un'indicazione che una classe derivata può sovrascrivere il metodo definito.
La classe rettangolare sovrascrive il file Disegno metodo ed è derivato dalla classe di forma. La classe rettangolare ha il proprio set di proprietà per l'implementazione. In questo caso, il metodo di disegno delle stampe di classe rettangolare Disegnare un rettangolo invece di Disegnare una forma.
Successivamente, in Principale(), Viene creata un'istanza della classe di forma e il suo metodo di disegno è chiamato. Quindi viene creata un'istanza della classe rettangolare e il suo metodo di disegno viene chiamato.
Poiché la classe rettangolare sovrascrive il metodo di disegno della classe di forma, quando chiamiamo il metodo di disegno sull'oggetto rettangolo, viene chiamata l'implementazione della classe rettangolare e Disegnare un rettangolo è stampato sulla console. Quando il programma è eseguito, emetterà:
Come usare il polimorfismo in C#
Dopo aver conosciuto il concetto di polimorfismo in C#, ora tratteremo i passaggi per usarlo nella programmazione C#.
Passaggio 1: definire la classe di base
Il primo passo è definire la classe base che contiene i metodi o le proprietà che saranno condivise da tutte le classi derivate. La classe base è definita usando il classe parola chiave:
animale di classe pubblicaIl codice sopra contiene una classe di base Animale Questo ha un metodo virtuale Makeound. La parola chiave virtuale mostra che la classe derivata sovrascriverà il metodo definito.
Passaggio 2: definire le classi derivate
Il prossimo passo è definire le classi derivate che provengono dalla classe base. In C#, possiamo definire una classe derivata usando il ":" operatore.
cane di classe pubblica: animaleL'esempio sopra contiene due classi di unità Cane E Gatto, ed entrambe queste classi prendono proprietà dalla classe di base che si chiama animale. Entrambe le classi sovrascrivono il file Makeound Metodo con la loro implementazione.
Passaggio 3: usa il polimorfismo
Il passaggio finale è usare il polimorfismo nel codice. Ora definiremo istanze delle classi derivate e chiameremo i loro metodi usando il riferimento della classe base.
Animale myanimal = new animale ();Qui abbiamo creato istanze delle classi di animali, cani e gatti. Dopodiché, il Makeound Il metodo è chiamato su ogni istanza. Dal Makeound Il metodo è virtuale, l'implementazione effettiva che viene chiamata dipende dal tipo effettivo dell'istanza. Ciò significa che quando chiamiamo mydog.Makeound () o mycat.Makeound (), il Makeound Il metodo verrà chiamato rispettivamente nella classe di cane o gatto.
Codice di esempio
Di seguito è riportato il codice combinato dei passaggi sopra spiegati:
usando il sistema;Dopo aver eseguito il codice sopra, la seguente output può essere visualizzata sulla console:
Conclusione
L'uso del polimorfismo in C# A Codice può essere scritto che gestisce più tipi di oggetti. In C#, possiamo usare il polimorfismo definendo una classe di base, creando classi derivate che ereditano dalla classe base e usando il riferimento della classe base per chiamare i metodi delle classi derivate. Seguendo i passaggi descritti nell'articolo sopra, chiunque può utilizzare il concetto di polimorfismo in C#.