SlideServe
Menu
Préférences
© SlideServe · v2026

Polymorfism

rudyard-wyatt avatar
10 diapositives · 316 Views · Nov 14, 2014

Polymorfism. Polymorfa variabler. class Person {}. Tillåtet, eftersom alla Studenter och Lärare är Personer. class Teacher : Person {}. class Student : Person {}. … Person a = new Person(); Person b = new Student(); Person c = new Teacher(); ….

Polymorfism - slide 1
01 / 10Polymorfism
1 / 17

Télécharger la présentation

Polymorfism
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Polymorfism

  2. Polymorfa variabler class Person {} Tillåtet, eftersom alla Studenter och Lärare är Personer. class Teacher : Person {} class Student : Person {} … Person a = new Person(); Person b = new Student(); Person c = new Teacher(); … Inte tillåtet, eftersom inte alla Personer är Studenter och Lärare. … Teacher x = new Person(); Student y = new Person(); …

  3. Polymorfism och dynamisk bindning Fordon FordonsStannare Stanna () StannaFordon () Bil Stanna ()

  4. Metodpolymorfism Det finns två slags ”metodpolymorfism”: • Parameterpolymorfism (överbelastning)Även om operationen har samma namn, blir det en annan metod om vi har en annan argumentlista, dvs en annan signatur. • Funktionspolymorfism (överskuggning)Om en operation i en subklass har samma signatur som en operation i dess basklass, kan subklassens metod överskugga superklassens metod.

  5. Parameterpolymorfism class Person { string namn; int age; void ändra(intaa) { age = aa; } void ändra(stringnn) { namn = nn; } void ändra(stringnn, int aa) { namn = nn; age = aa; } }

  6. Överskuggning (funktionspolymorfism) • Ibland omdefinieras operationer • Samma operation (med samma namn) finns då hos både subklassen och superklassen, men med olika metoder (annan kod som skall utföras) • Kallas i programmeringen för ” överskuggning” Cykel märke modell beräknaLivslängdKvar() Växelcykel antalVäxlar beräknadrevlivslängd() beräknaLivslängdKvar() förändrad metod

  7. Polymorfism Samma meddelande kan sändas till flera olika mottagare Olika mottagare exekverar varsin sekvens av instruktioner Att det finns flera beteenden, för det som betraktas som samma tjänst, kallas polymorfism :Vykort porto() :Paket porto() :Brev porto()

  8. Funktionspolymorfism class Person { public virtualvoid write() {// Kod} } class Teacher : Person { publicoverridevoid write() {// Annan kod} } class Student : Person {publicoverridevoid write() {// Annan kod} }

  9. I ett objektorienterat program kan till namnet samma operation implementeras olika i olika specialiseringar En referens till en variabel ur en klass kan i själva verket referera till en specialisering Det fastställs inte vilken av de till namnet lika operationerna som skall anropas förrän programmet körs Detta innebär att det är lätt att förändra/utöka ett system Det är lätt att återanvända kod Dynamisk bindning

  10. Funktionspolymorfism class Person { public void write() {// Kod} } Men om vi inte har gjort superklassens metod ”virtual” då? Med ”new” talar vi om att vi vill dölja den ärvda metoden men… ... Person p = new Student(); Student s = new Student(); p.write(); s.write() ... class Student : Person {publicnewvoid write() {// Annan kod} } Kör write från Person-klassen. Kör write från Student-klassen.