User Tools

Site Tools


java:hiding_static_methods

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
java:hiding_static_methods [2015/02/15 16:23]
gthanos created
java:hiding_static_methods [2015/04/20 06:50]
gthanos
Line 1: Line 1:
-=====  Κρύβοντας στατικές μεθόδους  ======+=====  Καλώντας στατικές μεθόδους από την γονική κλάση και την υποκλάση  ======
  
 Ας δοκιμάσουμε το παρακάτω παράδειγμα κληρονομικότητας δύο κλάσεων που περιέχουν δύο στατικές μεθόδους με το ίδιο //signature//. Ας δοκιμάσουμε το παρακάτω παράδειγμα κληρονομικότητας δύο κλάσεων που περιέχουν δύο στατικές μεθόδους με το ίδιο //signature//.
Line 22: Line 22:
         System.out.println("The instance method in Cat");         System.out.println("The instance method in Cat");
     }     }
 +
 +</code>     
 +    
 +<code java TestCat.java> 
 +public class TestCat {
     public static void main(String[] args) {     public static void main(String[] args) {
         Cat myCat = new Cat();         Cat myCat = new Cat();
-        Animal myAnimal = myCat;+        Animal myAnimalCat = myCat; 
 +        Animal myAnimal = new Animal(); 
 +        
         Animal.testClassMethod();         Animal.testClassMethod();
 +        Cat.testClassMethod();
 +
 +        System.out.println("");
 +
 +        myAnimalCat.testClassMethod();
 +        myAnimal.testClassMethod();
 +        myCat.testClassMethod();
 +
 +        System.out.println("");
 +        
 +        myAnimalCat.testInstanceMethod();
         myAnimal.testInstanceMethod();         myAnimal.testInstanceMethod();
 +        myCat.testInstanceMethod();        
     }     }
 } }
 </code> </code>
  
 +Η έξοδος του παραπάνω προγράμματος είναι 
 +
 +<code>
 +The static method in Animal
 +The static method in Cat
 +
 +The static method in Animal
 +The static method in Animal
 +The static method in Cat
 +
 +The instance method in Cat
 +The instance method in Animal
 +The instance method in Cat
 +
 +</code>
 +
 +Παρατηρούμε ότι ο τύπος των δεδομένων από τον οποίο καλούμε μία στατική μέθοδο είναι καθοριστικός για το ποια μέθοδος θα κλήθεί τελικά. Για παράδειγμα, η μεταβλητή ''myAnimal'' ορίζεται ως τύπου ''Animal'' αλλά δείχνει σε ένα αντικείμενο τύπου ''Cat''. Η στατική μέθοδος που τελικά καλείται είναι εκείνη που ορίζεται από τον τύπο της reference μεταβλητής (''Animal'' ή ''Cat'') και όχι από το ίδιο το αντικείμενο στο οποίο δείχνει αυτή, όπως θα περίμενε ίσως κανείς να ισχύει με βάση τον δυναμικό πολυμορφισμό της προηγούμενης παραγράφου. 
 +
 +Οι 3 τελευταίες γραμμές του προγράμματος αναφέρονται σε δυναμικό πολυμορφισμό για να δείξουν την αντίθεση των αποτελεσμάτων στην κλήση στατικών και μη στατικών μεθόδων.
 +
 +|Προηγούμενο: [[ :java:polymorphism | Στατικός και Δυναμικός Πολυμορφισμός ]] | Επόμενο: [[ :java:abstract_classes | Abstract Κλάσεις ]]|
java/hiding_static_methods.txt · Last modified: 2017/03/03 14:03 by gthanos