簡體   English   中英

如何將一個類變量訪問另一個

[英]How can i access one class variable into other

有對單獨的類類和類兩種 這兩個類都在同一包中。 我想將一個類的數據訪問到另一個類中,如何訪問變量數據。 我的程序很長,我只想要這個邏輯。謝謝您。

A.java類

public class A
   { 
     public static void main(String ar[])  
    {
      int a=100;
    }  
   }

B.java類

public class B extends A
{
  public static void main(String m[])
   {
     A obj=new A();
     System.out.println("Variable of class A is :"+ obj.a);
   }
}

我已經做了這件事來獲取訪問權限,就像我將變量a聲明為Static一樣,這樣我就可以直接獲取訪問權限,但是它不起作用。 當我正在編譯B.java時,它給我錯誤

無法在:= System.out.println(“ A類的變量為:” + obj.a )中找到符號;

表達式的非法開頭( 當我將變量a公開化時

:-(錯誤)public int a = 100; [A級]。

為什么要使用靜態main方法? 除此之外,字段a是本地的,在范圍之外不可訪問。 改用它。

public class A
{ 
  public int a;
  public A()  
   {
    a=100;
   }  
}

上面沒有兩個真正的面向對象的類,但是只有兩個用於靜態main方法的容器。 為了很好地結合兩個類中的代碼,您將需要廢棄該代碼並制作兼容OOP的類,並附帶實例字段和方法。 有關更多信息,請查看Java教程的OOP部分: 鏈接到OOP教程

首先,擺脫Amain() 您只需要應用程序中的一個 main() ,它就在B (因為A中的那個實際上不做任何事情):

public class A {
}

現在,您希望A具有一個類級別的int值:

public class A {
    private int a;
}

並且您希望它的默認值為100 ,是嗎? 構造函數是執行此操作的好地方:

public class A {
    private int a;

    public A() {
        this.a = 100;
    }
}

現在,您隨時可以執行以下操作:

A obj = new A();

您將擁有一個帶有值的對象。 為了從該對象外部訪問該值,您需要一個“ getter”:

public class A {
    private int a;

    public A() {
        this.a = 100;
    }

    public int get_a() {
        return this.a;
    }
}

現在B (或實際上在任何地方),您可以創建A的實例並使用“ getter”訪問該值:

A obj=new A();
System.out.println("Variable of class A is :"+ obj.get_a());

從語義上講,不要將其視為“從另一個類訪問變量”。 相反,請考慮您的對象是什么以及它們代表什么。 如果它是一個物理的,真實世界的對象,並且內部包含某種價值。

創建該對象的實例時,該實例在內部將在某個位置具有該值。 從該對象的外部 ,內部維護該值並不重要 只需有某種接口即可看到其價值。 這就是“ getter”方法的作用。

單線回答:要在類外部訪問變量,請使其成為類級別的。 您編寫了一個方法級別的變量,該變量只能在該范圍(方法)內訪問。

詳細說明:

有分開的第一類和第二類。 這兩個類都在同一包中。 我想將一個類的數據訪問到另一個類中,如何訪問變量數據。

因此,基本上,您知道通過擴展,您應該能夠將父類數據訪問到您的子類中。 為此,只需將父類中的數據作為類級別。

class A {
    int var = 10; //class level, but non-static, so to access you need A object

    void method() {
        int var = 20; //this is method local and can not be accessed outside
    }
}

public class B extends A {
    public static void main(String[] args) {
        A aObj = new A();
        System.out.println(aObj.var);
    }
}

表達式的非法開頭(當我將變量a公開化時)

它是非法的。 因為訪問修飾符(例如publicprivate等)適用於類級別的東西,例如您看到的class B類中的第一個varmain方法。

表示:您需要立即轉到此處: https : //docs.oracle.com/javase/tutorial/,而在缺少語言基礎知識時,不只是嘗試運行某些類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM