2015-12-12 91 views
-1

如果我在一個類中創建一個具有構造函數的對象,並且構造函數爲該對象提供了像'name'這樣的屬性,是否有方法從另一個類中專門訪問String'name'?就像在中,如果我有一個方法將對象傳遞給該方法,並且該方法需要從構造方法中訪問字符串'name',那麼我該如何解決它?從構造函數中提取信息

這可能是一個壞的問題已經有答案,但因爲我不知道正確的術語來搜索它我有點卡住了...

+0

您可以爲您的類添加一個getter,以便使用代碼可以訪問該對象內的該值。這與構造函數無關。 – David

+0

是的,就像@大衛說的。你知道getter和setter方法嗎? (我也不是一個自作聰明順便說一句)。 – Mike

+0

@大衛好吧,所以沒有辦法只通過傳遞對象的方法來獲得它? – user13948

回答

1

您無法讀取傳遞給參數構造函數定義之外的構造函數,除非該參數存儲在類的字段中。當然,如果你創建一個像MyClass myObject = new MyClass("Some String");這樣的類的實例,你可以在創建該對象的代碼範圍內訪問一些字符串。

一個類的領域,從一個實例myObject說現場fieldName的方式的一類MyClass可以被另一個類訪問是:

  • 如果場是公開的,通過myObject.fieldName
  • 訪問
  • 如果該字段是受保護的,通過繼承MyClass
  • 訪問它如果MyClass有該領域的吸氣劑:myObject.getFieldName()
  • 如果在F該領域是私人的,並沒有getFieldName()方法,那麼它不能從課外訪問。
0

這裏有幾個類,我想展示你想要做什麼。 我有一個Person類,它有一個名字字段和一個名爲sayHello的方法的Friend類,它訪問Person的name屬性。

public class Main 
{ 
    private static class Friend 
    { 
     public void sayHello(Person person) 
     { 
      System.out.println("Hello " + person.getName()); 
     } 
    } 

    private static class Person 
    { 
     private String name; 

     public Person(String name) 
     { 
      this.name = name; 
     } 

     public String getName() 
     { 
      return name; 
     } 
    } 

    public static void main(String[] args) 
    { 
     Person person = new Person("John Smith"); 
     Friend friend = new Friend(); 
     friend.sayHello(person); 
    } 
}