Differenza tra metodo virtuale e metodo astratto

Differenza chiave: i metodi astratti sono i metodi dichiarati ma non implementati. I metodi virtuali sono utilizzati per un'implementazione del polimorfismo basato sul tipo. La classe derivata ha la flessibilità di ri-implementare il metodo virtuale della classe base usando la parola chiave 'override'.

In C #, la parola chiave astratta può essere utilizzata con entrambe le classi e metodi. I metodi astratti sono quei metodi che non hanno alcuna forma di implementazione. Tuttavia, la logica di implementazione è ottenuta dalle classi non astratte derivate da esse. Ciò si ottiene ignorando quel metodo. A causa dell'assenza dell'attuazione effettiva, il corpo del metodo rimane vuoto. È importante notare che la dichiarazione di un metodo astratto è possibile solo in una classe astratta. Le classi che non possono essere inizializzate sono conosciute come classi astratte. Una classe che eredita da una classe astratta deve implementare tutti i metodi dichiarati come astratti nella classe astratta.

Per esempio -

esempio di classe astratta pubblicaAbstractClass

{

public abstract void exampleabstractMethod ();

pubblico virtuale vuoto nonAbstractMethod ()

{

Console.WriteLine ("L'implementazione è definita nel metodo");

}

class normalNonAbstractClass: exampleAbstractClass

{

public override void exampleabstractMethod ()

{

Console.WriteLine ("Override the exampleabstractMethod of the example exampleAbstractClass");

}

}

Virtual è anche una parola chiave associata alla modifica di un metodo, proprietà, indicizzatore o dichiarazione di eventi. L'uso di questa parola chiave consente la modifica dell'entità dichiarata in una classe derivata. In questo esempio, la classe derivata ha sovrascritto il metodo virtuale dichiarato nella classe base.

Base di classe

{

public virtual void Test ()

{

Console.WriteLine ( "Base.test");

}

}

classe Derivato: base

{

public override void Test ()

{

Console.WriteLine ( "Derived.Test");

}

}

I metodi virtuali sono utilizzati per un'implementazione del polimorfismo basato sul tipo. La classe derivata ha la flessibilità di reimplementare il metodo virtuale della classe base utilizzando la parola chiave override. Sia virtuale che astratto non possono essere utilizzati insieme ai modificatori statici o virtuali o di modifica.

Confronto tra metodo virtuale e astratto:

Metodo virtuale

Metodo astratto

Definizione

I metodi virtuali sono utilizzati per un'implementazione del polimorfismo basato sul tipo.

I metodi astratti sono i metodi dichiarati ma non hanno alcuna implementazione.

Implementazione

Sì, può avere implementazione

No, non può avere alcuna implementazione

Dev'essere sovrascritto

Non compulsivo

obbligatorio

Parola chiave utilizzata per distinguerlo da altri tipi di metodi

Virtuale

Astratto

Classe

La classe contenente il metodo virtuale può essere istanziata.

La classe contenente il metodo astratto non può essere istanziata. Può essere ereditato solo

Scopo

Ambito del metodo virtuale solo per i membri.

Ambito del metodo astratto per membri e classi.

Metodo da eseguire (tipo classe oggetto-base)

L'implementazione del genitore verrà chiamata solo nel caso in cui non venga fornita alcuna implementazione nella classe concreta.

Implementazione concreta

Metodo da eseguire (tipo di classe oggetto-calcestruzzo)

Implementazione concreta

Implementazione concreta

Raccomandato

Articoli Correlati

  • differenza tra: Differenza tra EEPROM e FlashROM

    Differenza tra EEPROM e FlashROM

    Differenza chiave: EEPROM è un tipo di memoria non volatile che è una memoria modificabile dall'utente che può essere costantemente cancellata e riprogrammata dall'utente mediante l'applicazione di una tensione elettrica superiore al normale generata esternamente o internamente. FlashROM è un'utilità di programmazione flash universale utilizzata per rilevare, leggere, verificare, cancellare o scrivere i chip del BIOS nei pacchetti DIP, PLCC, SOIC, TSOP o BGA. Dal
  • differenza tra: Differenza tra House e Techno Music

    Differenza tra House e Techno Music

    Key Difference: House è un genere di musica elettronica caratterizzato da 4/4 beat, cassa, piatti hi-hat off-beat e bassline sintetizzate. La musica sembra essere una miscela di disco e musica elettronica. Techno, anche un genere di musica dance elettronica è simile a Dubstep. La techno ha le sue origini a Detroit, nel Michigan, tra la metà e la fine degli anni '80. I
  • differenza tra: Differenza tra ansia e preoccupazione

    Differenza tra ansia e preoccupazione

    Differenza chiave: l' ansia è una risposta a un fattore di stress. L'ansia è una sensazione di paura, disagio e preoccupazione. Può essere radicato in ogni caso che ti fa sentire frustrato, arrabbiato o nervoso. La preoccupazione è quando sei preoccupato per una certa situazione. La preoccupazione arriva in varie forme, dimensioni e forme in quasi ogni giorno per quanto riguarda una persona o una situazione o qualcosa del genere. An
  • differenza tra: Differenza tra part-time e lavoro occasionale

    Differenza tra part-time e lavoro occasionale

    Differenza fondamentale: il lavoro part-time è una forma di occupazione che richiede al dipendente di lavorare meno ore alla settimana rispetto a un dipendente a tempo pieno. I lavori occasionali sono lavori che vengono eseguiti solo a volte. Questo potrebbe anche essere fatto su base contrattuale o senza un contratto.
  • differenza tra: Differenza tra HTC First e Samsung Galaxy S3

    Differenza tra HTC First e Samsung Galaxy S3

    Differenza fondamentale: HTC First è il primo telefono che verrà rilasciato in esecuzione nell'interfaccia utente di Facebook Home. Il telefono sarà alimentato da un Qualcomm MSM8930 Snapdragon 400 1.4 GHz Dual-core Krait e un 1 GB di RAM. Galaxy S3 è uno smartphone multi-touch in formato ardesia lanciato a maggio 2012. Ha
  • differenza tra: Differenza tra un tradizionale e Roth IRA

    Differenza tra un tradizionale e Roth IRA

    Differenza fondamentale: la differenza principale tra un IRA tradizionale e un IRA Roth è che in un IRA tradizionale, qualsiasi reddito inserito nel conto è generalmente esentasse, assicurando che la persona soddisfi determinati criteri. Tuttavia, il reddito messo in un Roth IRA non è esentasse. Tuttavia, durante il periodo di sospensione questi fattori sono invertiti. Q
  • differenza tra: Differenza tra C e Embedded C

    Differenza tra C e Embedded C

    Differenza fondamentale: C è un tipo di linguaggio di programmazione per computer. C è stato originariamente sviluppato da Dennis Ritchie presso AT & T Bell Labs tra il 1969 e il 1973. Ha un codice sorgente del programma in formato libero. C è un linguaggio di programmazione generico. Embedded C, d'altra parte, è un insieme di estensioni di lingua per il linguaggio di programmazione C. È
  • differenza tra: Differenza tra Dubstep e Techno

    Differenza tra Dubstep e Techno

    Key Difference: Dubstep è nato nei sotterranei di South London, UK nel 1998 ed è fortemente influenzato dal dub giamaicano. Il tempo varia tra 138-142 battiti al minuto, con un clap o rullante di solito inserito ogni terzo battito in una barra. Techno, anche un genere di musica dance elettronica è simile a Dubstep. L
  • differenza tra: Differenza tra HeartGold e SoulSilver

    Differenza tra HeartGold e SoulSilver

    Differenza fondamentale: HeartGold e SoulSilver sono videogiochi di ruolo per Nintendo DS basati sulla serie Pokémon. Sono stati rilasciati in coppia nel 2009 in Giappone. I giochi sono stati rilasciati in Nord America, Australia ed Europa nel marzo 2010. Il giocatore incontrerà Kimono Girls durante il gioco.

Scelta Del Redattore

Differenza tra Cake e Brownie

Differenza fondamentale: una torta è una forma di pane; mentre il brownie è qualcosa tra una torta e un biscotto. Una torta può essere pane o pasticceria. Una torta è una forma di pane, che può essere decorata con glasse e creme. Al giorno d'oggi, le torte sono di forma stratificata. Le glasse sono composte da creme, che vengono applicate tra gli strati. Le