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:28]
gthanos
java:hiding_static_methods [2016/03/31 08:46] (current)
doufexi
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 ​yourAnimal ​= new Animal();+        Animal ​myAnimal ​= new Animal();
         ​         ​
         Animal.testClassMethod();​         Animal.testClassMethod();​
 +        Cat.testClassMethod();​
 +
 +        System.out.println(""​);​
 +
 +        myAnimalCat.testClassMethod();​
         myAnimal.testClassMethod();​         myAnimal.testClassMethod();​
-        ​youAnimal.testClassMethod();​+        ​myCat.testClassMethod(); 
 + 
 +        System.out.println(""​);
         ​         ​
-        ​myCat.testInstanceMethod();​+        ​myAnimalCat.testInstanceMethod();​
         myAnimal.testInstanceMethod();​         myAnimal.testInstanceMethod();​
-        ​yourAnimal.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''​) και όχι από το ίδιο το αντικείμενο στο οποίο δείχνει αυτή, όπως ίσως θα περίμενε ίσως κανείς να ισχύει με βάση [[:​java:​polymorphism|τον δυναμικό πολυμορφισμό της προηγούμενης παραγράφου]]. ​
 +
 +Οι 3 τελευταίες γραμμές του προγράμματος αναφέρονται σε δυναμικό πολυμορφισμό για να δείξουν την αντίθεση των αποτελεσμάτων στην κλήση στατικών και μη στατικών μεθόδων.
 +
 +|Προηγούμενο:​ [[ :​java:​polymorphism | Στατικός και Δυναμικός Πολυμορφισμός ]] | [[ :toc | Περιεχόμενα ]]| Επόμενο:​ [[ :​java:​abstract_classes | Abstract Κλάσεις ]]|
java/hiding_static_methods.1424017735.txt.gz · Last modified: 2016/02/26 11:15 (external edit)