如何使用从超类到子类的变量?

Mik*_*kel 6 java variables class

我有一个超类,我想使用这个超类里面的变量进入我的子类.这怎么可能?

SLa*_*aks 10

只需创建字段 protected,这意味着它应该对所有派生类可见.


pin*_*her 5

我有一个超类,我想在我的子类中使用该超类内的变量。这怎么可能?

如果你的变量被声明为protectedor public(或) 你的变量有default访问权限(在这种情况下你不指定任何关键字)并且它们在同一个包中(-->你可以直接在子类中访问它。你可以使用this关键字(如果您很具体)。

例子:

   public class A{
         protected int field=1;
   } 
   public class B extends A{
         public B(){
             System.out.println(this.field);
         }
         public static void main(String args[]){
           new B();
        }
   }
Run Code Online (Sandbox Code Playgroud)

请注意,变量覆盖是不可能的。如果您有一个与超类中同名的变量,那么您就无法直接访问它。那么你可以使用super关键字。

       public class A{
             protected int field=1;
       } 
       public class B extends A{
             protected int field=3;
             public B(){
                 System.out.println(this.field);
                 System.out.println(super.field);
             }
        public static void main(String args[]){
           new B();
        }
       }
Run Code Online (Sandbox Code Playgroud)

  • `super.field` 还有一种可能性:`((A)this).field`。 (2认同)