1 / 10

Polymorfism

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(); ….

Télécharger la présentation

Polymorfism

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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.

More Related