2017-05-30 72 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”);