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

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:hiding_static_methods [2015/04/20 06:50] gthanosjava:hiding_static_methods [2017/03/03 14:03] (current) gthanos
Line 5: Line 5:
 <code java Animal.java> <code java Animal.java>
 public class Animal { public class Animal {
-    public static void testClassMethod() { +  public static void testClassMethod() { 
-        System.out.println("The static method in Animal"); +    System.out.println("The static method in Animal"); 
-    +  
-    public void testInstanceMethod() { +  public void testInstanceMethod() { 
-        System.out.println("The instance method in Animal"); +    System.out.println("The instance method in Animal"); 
-    }+  }
 } }
 </code> </code>
Line 16: Line 16:
 <code java Cat.java> <code java Cat.java>
 public class Cat extends Animal { public class Cat extends Animal {
-    public static void testClassMethod() { +  public static void testClassMethod() { 
-        System.out.println("The static method in Cat"); +    System.out.println("The static method in Cat"); 
-    +  
-    public void testInstanceMethod() { +  public void testInstanceMethod() { 
-        System.out.println("The instance method in Cat"); +    System.out.println("The instance method in Cat"); 
-    }+  }
 } }
 </code>     </code>    
Line 27: Line 27:
 <code java TestCat.java> <code java TestCat.java>
 public class TestCat { public class TestCat {
-    public static void main(String[] args) { +  public static void main(String[] args) { 
-        Cat myCat = new Cat(); +    Cat myCat = new Cat(); 
-        Animal myAnimalCat = myCat; +    Animal myAnimalCat = myCat; 
-        Animal myAnimal = new Animal(); +    Animal myAnimal = new Animal(); 
-         +     
-        Animal.testClassMethod(); +    Animal.testClassMethod(); 
-        Cat.testClassMethod();+    Cat.testClassMethod();
  
-        System.out.println("");+    System.out.println("");
  
-        myAnimalCat.testClassMethod(); +    myAnimalCat.testClassMethod(); 
-        myAnimal.testClassMethod(); +    myAnimal.testClassMethod(); 
-        myCat.testClassMethod();+    myCat.testClassMethod();
  
-        System.out.println(""); +    System.out.println(""); 
-         +     
-        myAnimalCat.testInstanceMethod(); +    myAnimalCat.testInstanceMethod(); 
-        myAnimal.testInstanceMethod(); +    myAnimal.testInstanceMethod(); 
-        myCat.testInstanceMethod();         +    myCat.testInstanceMethod();     
-    }+  }
 } }
 </code> </code>
Line 63: Line 63:
 The instance method in Animal The instance method in Animal
 The instance method in Cat 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.1429512641.txt.gz · Last modified: 2015/04/20 05:50 (external edit)