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 17:40]
gthanos
java:hiding_static_methods [2016/03/31 08:46] (current)
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:​abstract_classes | Abstract Κλάσεις ]]|+|Προηγούμενο:​ [[ :​java:​polymorphism | Στατικός και Δυναμικός Πολυμορφισμός ​]] | [[ :toc | Περιεχόμενα ​]]| Επόμενο:​ [[ :​java:​abstract_classes | Abstract Κλάσεις ]]|
java/hiding_static_methods.1424022041.txt.gz · Last modified: 2016/02/26 11:15 (external edit)