User Tools

Site Tools


java:polymorphism

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
java:polymorphism [2020/02/24 04:36] – [Δυναμικός Πολυμορφισμός] gthanosjava:polymorphism [2020/03/27 13:18] (current) – [Δυναμικός Πολυμορφισμός] gthanos
Line 32: Line 32:
 Ας υποθέσουμε δύο κλάσεις που η μία κληρονομεί από την άλλη και οι δύο έχουν δύο διακριτές μεθόδους με το ίδιο όνομα και τις ίδιες τυπικές παραμέτρους, δηλαδή το ίδιο //signature//. Σε αυτή την περίπτωση λέμε ότι η μέθοδος της υποκλάσης, επανα-ορίζει (//overrides//) την μέθοδο της γονικής της κλάσης. Ένα παράδειγμα είναι το παρακάτω. Ας υποθέσουμε δύο κλάσεις που η μία κληρονομεί από την άλλη και οι δύο έχουν δύο διακριτές μεθόδους με το ίδιο όνομα και τις ίδιες τυπικές παραμέτρους, δηλαδή το ίδιο //signature//. Σε αυτή την περίπτωση λέμε ότι η μέθοδος της υποκλάσης, επανα-ορίζει (//overrides//) την μέθοδο της γονικής της κλάσης. Ένα παράδειγμα είναι το παρακάτω.
  
-<code java TestDog.java> +<code java Polymorphism.java> 
-class Animal {     +class Animal { 
-   public void signature(){ +  
-      System.out.println("I am an animal."); +  public void signature(){ 
-   }+    System.out.println("I am an animal."); 
 +  }
 } }
  
 class Mammal extends Animal { class Mammal extends Animal {
-   public void signature() { +  int numberOfBabies; 
-      System.out.println("I am a mammal!"); +   
-   }+  public Mammal(int babies) { 
 +    numberOfBabies = babies; 
 +  } 
 +   
 +  public int getBabies() { 
 +    return numberOfBabies; 
 +  } 
 +   
 +  public void signature() { 
 +    System.out.println("I am a mammal! I birth "+numberOfBabies+" babies."); 
 +  }
 } }
  
 class Dog extends Mammal { class Dog extends Mammal {
- +  private String name; 
-   public void signature() { +   
-      System.out.println("I am a dog!"); +  public Dog(int babies, String name) { 
-   }+    super(babies); 
 +    this.name = name; 
 +  } 
 +   
 +  public String getName() { 
 +    return name; 
 +  } 
 +   
 +  public void signature() { 
 +    System.out.println("I am a dog! My name is "+name+"."); 
 +  }
 } }
  
-public class TestDog {+public class Polymorphism {
  
-   public static void main(String args[]) { +  public static void main(String args[]) { 
-      Animal = new Animal(); // Animal reference and object +    Animal animal = new Animal(); // Animal reference and object 
-      Animal = new Mammal();  // Animal reference but Mammal object +    Animal mammal = new Mammal(3);  // Animal reference but Mammal object 
-      Animal = new Dog();    // Animal reference but Dog object+    Animal dog = new Dog(4, "Azor");    // Animal reference but Dog object
  
-      a.signature(); //output: I am an animal. +    animal.signature(); //output: I am an animal. 
-      b.signature(); //output: I am a mammal! +    mammal.signature(); //output: I am a mammal! 
-      c.signature(); //output: I am a dog! +    dog.signature(); //output: I am a dog! 
-   }+     
 +    //mammal.getBabies(); 
 +    //dog.getName(); 
 +  }
 } }
 </code> </code>
java/polymorphism.1582518991.txt.gz · Last modified: 2020/02/24 04:36 (external edit)