Overriding member variables in Java ( Variable Hiding)

前端 未结 12 1123
小蘑菇
小蘑菇 2020-11-22 03:07

I am studying overriding member functions in JAVA and thought about experimenting with overriding member variables.

So, I defined classes

public clas         


        
12条回答
  •  余生分开走
    2020-11-22 03:44

    As Many users have already pointed out, this is not polymorphism. Polymorphism only applies to methods(functions).

    Now as to why the value of the intVal of class A is printed, this happens because as you can see the reference aRef is of type A.

    I can see why you are confused by it. By the same procedure you have accessed the overridden methods for ex. the method identifyClass() but the not the variables which directly proves the first line that I have written .

    Now in order to access the variable you can do ((Superclass)c).var

    Note here that the Superclass can be many levels up for example A<-B<-C. That is C extends B and B extends A. If you wanted the value of var of A then you could have done ((A)c).var .

    EDIT: as one of the users have pointed out this 'trick' does not apply to static methods, because they are static.

提交回复
热议问题