2017-05-30 104 views
-8

的Person.setPhoneNumber是說避免主要方法靜態定義?

主要方法是不上課PersonTest靜態的,請確定的主要方法爲:

,但我不能在Person類的字符串作爲PERSONNAME定義靜態的。那我該怎麼辦?

Person類:

public class Person { 

    private String name; 
    private int age; 
    private String phoneNumber; 

    public Person(String n, int a){ 
     name = n; 
     age = a; 
     phoneNumber = null; 
    } 

    public String getName(){ 
     return name; 
    } 

    public void setname(String n){ 
     this.name = n; 
    } 

    public int getAge(){ 
     return age; 
    } 

    public void setAge(int a){ 
     age = a; 
    } 

    public String getPhoneNumber(){ 
     return phoneNumber; 
    } 

    public void setPhoneNumber(String pn){ 
     this.phoneNumber = pn; 
    } 

    public String toString() { 
     return "Person {name=" + name +", age= " + age +", phone number =" + phoneNumber+ "}"; 
    } 

}

人測驗:

public class PersonTest { 
     public void main(String[] args){ 
      Person person1 = new Person("Joel.Z", 20); 
      Person.setPhoneNumber("8324193601"); 
      Person person2 = new Person("Fred Werd", 84); 
      Person.setPhoneNumber("585275333"); 
      System.out.println(person1); 
      System.out.println(person2); 
     } 
} 
+1

它應該是'public static void main(String [] args)' – Ishnark

+3

你應該做'person1.setPhoneNumber'!該方法是一個實例方法,而不是一個靜態方法! – Li357

+0

你爲什麼寫'Person.setPhoneNumber(「585275333」);'?當你不使用它時,創建'person2'有什麼意義。你爲什麼試圖以靜態的方式調用該方法,雖然它不是靜態的,你不希望它是靜態的? – Tom

回答

3

主要方法應該是static

此外,你應該打電話給你的方法上實例,而不是一個

public class PersonTest { 
     public static void main(String[] args){ 
      Person person1 = new Person("Joel.Z", 20); 
      person1.setPhoneNumber("8324193601"); 
      Person person2 = new Person("Fred Werd", 84); 
      person2.setPhoneNumber("585275333"); 
      System.out.println(person1); 
      System.out.println(person2); 
     } 
} 
+0

謝謝。剛剛在今天瞭解到這一點。 – DJandCoder

2

正如@ΔλЛ說是正確的,你的主要方法必須是靜態,也請記住,您必須使用所創建的對象的實例,它意味着:

這裏要創建person1對象:

Person person1 = new Person("Joel.Z", 20); 

所以,你必須使用對象來訪問屬性:

person1.setPhoneNumber("8324193601"); 

代替Person.setPhoneNumber( 「8324193601」);以與第二個對象相同的方式:person2.setPhoneNumber(「585275333」);而不是Person.setPhoneNumber(「585275333」);