Java Field Hiding

后端 未结 3 550
长发绾君心
长发绾君心 2020-12-10 19:57

I was wondering what it means to say a field is hidden between 2 java classes and what it means when running code in terms of resulting output?

I have an abstract c

3条回答
  •  隐瞒了意图╮
    2020-12-10 20:32

    • Java Language Specification

      If the class declares a field with a certain name, then the declaration of that field is said to hide any and all accessible declarations of fields with the same name in superclasses, and superinterfaces of the class.

      A hidden field can be accessed by using a qualified name if it is static, or by using a field access expression that contains the keyword super or a cast to a superclass type.

      See more in http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html

    • Example Code

      class A {
          static int field;
      }
      class B extends A {
          int field;
          void doSomething() {
              System.out.println(super.field); // From A
              System.out.println(field); // From B
          }
      }
      class Main {
          public static void main(String[] args) {
              B b = new B();
              System.out.println(b.field); // From B
              System.out.println(((A) b).field); // From A
              System.out.println(A.field); // From A
          }
      }
      

提交回复
热议问题