java:hiding_static_methods

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:hiding_static_methods [2015/02/15 16:57]
gthanos
java:hiding_static_methods [2016/03/31 08:46] (current)
doufexi
Line 1: Line 1:
-=====  Κρύβοντας στατικές μεθόδους ​ ======+=====  Καλώντας στατικές μεθόδους ​από την γονική κλάση και την υποκλάση ​ ​======
  
 Ας δοκιμάσουμε το παρακάτω παράδειγμα κληρονομικότητας δύο κλάσεων που περιέχουν δύο στατικές μεθόδους με το ίδιο //​signature//​. Ας δοκιμάσουμε το παρακάτω παράδειγμα κληρονομικότητας δύο κλάσεων που περιέχουν δύο στατικές μεθόδους με το ίδιο //​signature//​.
Line 29: Line 29:
     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 ​yourAnimal ​= new Animal();+        Animal ​myAnimal ​= new Animal();
         ​         ​
         Animal.testClassMethod();​         Animal.testClassMethod();​
Line 37: Line 37:
         System.out.println(""​);​         System.out.println(""​);​
  
 +        myAnimalCat.testClassMethod();​
         myAnimal.testClassMethod();​         myAnimal.testClassMethod();​
-        yourAnimal.testClassMethod();​ 
         myCat.testClassMethod();​         myCat.testClassMethod();​
  
         System.out.println(""​);​         System.out.println(""​);​
         ​         ​
-        ​myCat.testInstanceMethod();​+        ​myAnimalCat.testInstanceMethod();​
         myAnimal.testInstanceMethod();​         myAnimal.testInstanceMethod();​
-        ​yourAnimal.testInstanceMethod();​+        ​myCat.testInstanceMethod(); ​       
     }     }
 } }
Line 60: Line 60:
 The static method in Cat The static method in Cat
  
-The instance method in Cat 
 The instance method in Cat The instance method in Cat
 The instance method in Animal The instance method in Animal
 +The instance method in Cat
 +
 </​code>​ </​code>​
  
-Παρατηρούμε ότι ο τύπος των δεδομένων από τον οποίο καλούμε μία στατική μέθοδο είναι καθοριστικός για το ποια μέθοδος θα κλήθεί τελικά. Για παράδειγμα,​ η μεταβλητή ''​myAnimal''​ ορίζεται ως τύπου ''​Animal''​ αλλά δείχνει σε ένα αντικείμενο τύπου ''​Cat''​. Η στατική μέθοδος που τελικά καλείται είναι εκείνη που ορίζεται από τον τύπο της reference μεταβλητής και όχι από το ίδιο το αντικείμενο,​ όπως θα περίμενε ίσως κανείς να ισχύει με βάση τον δυναμικό πολυμορφισμό της προηγούμενης παραγράφου. Οι 3 τελευταίες γραμμές του προγράμματος αναφέρονται σε δυναμικό πολυμορφισμό για να δείξουν την αντίθεση των αποτελεσμάτων στην κλήση στατικών και μη στατικών μεθόδων.+Παρατηρούμε ότι ο τύπος των δεδομένων από τον οποίο καλούμε μία στατική μέθοδο είναι καθοριστικός για το ποια μέθοδος θα κλήθεί τελικά. Για παράδειγμα,​ η μεταβλητή ''​myAnimal''​ ορίζεται ως τύπου ''​Animal''​ αλλά δείχνει σε ένα αντικείμενο τύπου ''​Cat''​. Η στατική μέθοδος που τελικά καλείται είναι εκείνη που ορίζεται από τον τύπο της reference μεταβλητής ​(''​Animal''​ ή ''​Cat''​) ​και όχι από το ίδιο το αντικείμενο ​στο οποίο δείχνει αυτή, όπως ίσως θα περίμενε ίσως κανείς να ισχύει με βάση ​[[:​java:​polymorphism|τον δυναμικό πολυμορφισμό της προηγούμενης παραγράφου]] 
 + 
 +Οι 3 τελευταίες γραμμές του προγράμματος αναφέρονται σε δυναμικό πολυμορφισμό για να δείξουν την αντίθεση των αποτελεσμάτων στην κλήση στατικών και μη στατικών μεθόδων. 
 + 
 +|Προηγούμενο:​ [[ :​java:​polymorphism | Στατικός και Δυναμικός Πολυμορφισμός ]] | [[ :toc | Περιεχόμενα ]]| Επόμενο:​ [[ :​java:​abstract_classes | Abstract Κλάσεις ]]|
java/hiding_static_methods.1424019448.txt.gz · Last modified: 2016/02/26 11:15 (external edit)