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
Last revision Both sides next revision
java:hiding_static_methods [2015/02/15 17:38]
gthanos
java:hiding_static_methods [2016/03/31 08:45]
doufexi
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 μεταβλητής (''​Animal''​ ή ''​Cat''​) και όχι από το ίδιο το αντικείμενο στο οποίο δείχνει αυτή, όπως θα περίμενε ίσως κανείς να ισχύει με βάση τον δυναμικό πολυμορφισμό της προηγούμενης παραγράφου. ​+Παρατηρούμε ότι ο τύπος των δεδομένων από τον οποίο καλούμε μία στατική μέθοδο είναι καθοριστικός για το ποια μέθοδος θα κλήθεί τελικά. Για παράδειγμα,​ η μεταβλητή ''​myAnimal''​ ορίζεται ως τύπου ''​Animal''​ αλλά δείχνει σε ένα αντικείμενο τύπου ''​Cat''​. Η στατική μέθοδος που τελικά καλείται είναι εκείνη που ορίζεται από τον τύπο της reference μεταβλητής (''​Animal''​ ή ''​Cat''​) και όχι από το ίδιο το αντικείμενο στο οποίο δείχνει αυτή, όπως ίσως θα περίμενε ίσως κανείς να ισχύει με βάση ​[[:​java:​polymorphism|τον δυναμικό πολυμορφισμό της προηγούμενης παραγράφου]]
  
 Οι 3 τελευταίες γραμμές του προγράμματος αναφέρονται σε δυναμικό πολυμορφισμό για να δείξουν την αντίθεση των αποτελεσμάτων στην κλήση στατικών και μη στατικών μεθόδων. Οι 3 τελευταίες γραμμές του προγράμματος αναφέρονται σε δυναμικό πολυμορφισμό για να δείξουν την αντίθεση των αποτελεσμάτων στην κλήση στατικών και μη στατικών μεθόδων.
 +
 +|Προηγούμενο:​ [[ :​java:​polymorphism | Στατικός και Δυναμικός Πολυμορφισμός ]] | [[ :java:toc | Περιεχόμενα ]]| Επόμενο:​ [[ :​java:​abstract_classes | Abstract Κλάσεις ]]|
java/hiding_static_methods.txt · Last modified: 2016/03/31 08:46 by doufexi