2015-09-01 141 views
-2

我有一個接收用戶輸入的類。然後結果被解析並存儲在我放在下面的這個類中。然後,有一個單獨的課程正在採取下面課程中存儲的內容,並用它創建一些內容。我會發布所有的類,但只有太多的代碼行。我已經放在我有一個問題的確切類下(爲了簡化,減去同類型的其他變量) 我想知道是否有方法從另一個類中的抽象類訪問變量。這裏是我的抽象類:訪問其他類的變量

public abstract class ParsResults { 

    public String AnsName; 

    public String AnsType; 

} 

然後我有另一個類需要這些變量。我只是不知道如何處理它。提前致謝。

+0

其他班級是否是一個子班級?另外,請遵循Java命名約定('name')。 –

+1

那麼如果你從另一個類中擴展這個類,那麼這些變量將全部都是可訪問的。事實上,因爲您將變量設置爲「公共」,他們可以在任何地方訪問。 –

+0

這沒有意義:您從*對象*中獲取信息不是來自類,更不是*抽象*類。你的問題是一個[XY問題](http://mywiki.wooledge.org/XyProblem),當你問最好的解決方案是使用完全不同的方法時,如何解決特定的代碼問題。仔細考慮一下你的問題,然後告訴我們你究竟想要做什麼的細節,而不是你想如何解決它。 –

回答

-2

你必須安裝那個類,但是你不能實例化一個抽象類。 所以首先創建一個不是抽象類巫婆延伸ParsResults,然後實例化這個新的類,並在你的主,你可以看到像這樣的變量:

public class NewClass extends ParsResults { 

    //... 

} 


    public static void main(String [] args){ 

     NewClass nc = new NewClass(); 

     // ... 

     System.out.println(nc.Name); 

    } 
0
  1. 是絕對沒有辦法訪問的抽象實例的實例變量類,因爲它們不能有實例。
  2. 請不要將實例變量設爲public,使它們變爲private並提供getter和setter。
  3. 您的實例變量應該以小寫字母開頭。
  4. 如果您有一個具體子類ParsResults的實例,您可以使用getters訪問它的值(請參閱第2點)。
-1

來共享類之間的變量,有三種方式:

public class Human { 

    // instance variables 
    public String name; 
    public int age; 

    //constructor, creates an instance of the Human class. 
    public Human(String s, int i){ 

    name = s; 
    age = i; 
    } 

} 
在這種情況下

,你的實例變量是公開的。 所以在另一個類,當你創建一個人力類的實例調用:

Human aHuman = new Human(tom, 25); 

那麼你就可以直接訪問這兩個實例變量。您可以通過使用得到其數值:

String theHumanName = aHuman.name; 

,您可以通過使用其值設置(修改):如果你的變量是公共

aHuman.name = "mike"; 

兩個以上的線路纔有效。你應該讓他們保持私密的原因是保持課堂以外的價值觀。所以如果他們是私人的,那麼你可以根據需要創建get和set方法。 這裏是如何要做到:

public class Human { 

    // instance variables 
    private String name; 
    private int age; 

    //constructor, creates an instance of the Human class. 
    public Human(String s, int i){ 

     setName(s); 
     setAge(i); 
    } 

    /** 
    * @return the name 
    */ 
    public String getName() { 
    return name; 
    } 

    /** 
    * @param name the name to set 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 

    /** 
    * @return the age 
    */ 
    public int getAge() { 
     return age; 
    } 

    /** 
    * @param age the age to set 
    */ 
    public void setAge(int age) { 
     this.age = age; 
} 

} 
現在從類的外部

,您可以撥打:

String theHumanName = aHuman.getName();  // this a method call, therefore you must have the parentheses 

,您可以通過使用其值設置(修改):

aHuman.setName("mike"); 
+0

第三種方法是將數據作爲參數傳遞給構造函數,例如當我創建'aHuman'實例時。 –