2013-06-07 4 views
6

Ich habe eine Oberklasse und ich möchte eine Variable, die innerhalb dieser Oberklasse ist in meine Unterklasse verwenden. Wie kann das möglich sein?Wie verwendet man eine Variable von einer Oberklasse zu einer Unterklasse?

+0

Wenn es als "geschützt" deklariert ist, ist es zugänglich. – fge

+0

Lesen Sie [dies] (http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) und [dies] (http://docs.oracle.com/javase/tutorial/java/IandI /subclasses.html) von den Java-Trails. – Brian

Antwort

8

Machen Sie einfach das Feldprotected, was bedeutet, dass es für alle abgeleiteten Klassen sichtbar sein sollte.

0

Wenn es öffentlich oder geschützt ist, sollte es in allen Methoden der Unterklasse sichtbar sein. Sie können es als global variable in der Unterklasse vorstellen.

3

Ich habe eine Oberklasse und ich möchte eine Variable verwenden, die innerhalb dieser Oberklasse in meine Unterklasse ist. Wie kann das möglich sein?

Wenn Ihre Variablen als protected deklarierten oder public (oder) Ihre Variable hat default Zugriffsrechte (in diesem Fall, dass Sie nicht mit jedem Stichwort angeben), und sie sind in demselben Paket (-> Sie zugreifen können . es in der Unterklasse direkt können Sie this Schlüsselwort verwenden, wenn Sie spezifisch sind

Beispiel:..

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(); 
     } 
    } 

Bitte beachten Sie, dass mit variabler überwiegenden nicht möglich ist wenn Sie eine Variable wit h der gleiche Name wie in der Superklasse, dann haben Sie Pech, direkt darauf zuzugreifen. Dann können Sie das Schlüsselwort super verwenden.

 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(); 
     } 
     } 
+2

Es gibt eine weitere Möglichkeit für 'super.field':' ((A) this) .field'. –

Verwandte Themen