2015-07-11 62 views
-1

我只是想知道我是否正確地創建了類的實例。還有什麼方法可以測試classinstances。我嘗試了例如在我的main方法中執行System.out.println(Toddler.getAge()),但我一直收到error一個類的實例以及如何測試它們

public class Person 
{ 
    private String name; 
    private int age; 


    public Person() 
    { 
    name = "No name yet"; 
    age = 0; 
    } 

    public Person(String userName, int userAge) 
    { 
    name = userName; 
    age = userAge; 
    } 

    public static Person createAdult(String name, int age) 
    { 
    Person newPerson = new Person("An adult", 21); 
    return newPerson; 
    } 

    public String getName() 
    { 
    return name; 
    } 

    public int getAge() 
    { 
    return age; 
    } 

    public void setName(String first, String last) 
    { 
    name = first + last; 
    } 

    public void setName(String wholeName) 
    { 
    name = wholeName; 
    } 

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

    public static Person createToddler(String name, int age) 
    { 
    Person Toddler = new Person("A toddler", 2); 
    return Toddler; 
    } 

    public static Person createPreschooler(String name, int age) 
    { 
    Person Preschooler = new Person("A preschooler", 5); 
    return Preschooler; 
    } 

    public static Person createAdolescent(String name, int age) 
    { 
    Person Adolescent = new Person("An adolescent", 9); 
    return Adolescent; 
    } 

    public static Person createTeenager(String name, int age) 
    { 
    Person Teenager = new Person("A teenager", 15); 
    return Teenager; 
    } 


} 
+0

最簡單的方法:在你的Person()構造函數中打印一些東西。如果對象創建正確,那麼它將在控制檯上打印。 – Bikku

回答

0

爲了檢查對象是否是正確的類的實例可以使用instanceof運營商,如: -

Person p = new Person(); 
System.out.print(p instanceof Person) ; // will return true if p is an instance of Person 

此外,如果你正在做Toddler.getAge()(幼兒代碼上面沒有提供),如果getAge()不是一個靜態方法,那麼這可能不起作用。你需要有一個Toddler類的實例來調用getAge()

public int getAge()應該是簽名這樣new Toddler().getAge() OR

public static int getAge()工作應該是使這一Toddler.getAge()工作簽名。

1

你沒有提到你如何在main方法中使用Toddler.getAge()。 但按照Person類的代碼,你一定要使用這樣的:

System.out.println(Person.createToddler("Tahir", 25).getName());//for name 
System.out.println(Person.createToddler("Tahir", 25).getName());//for age 

這段代碼正確打印年齡和名字。 Person.createToddler("Tahir", 25)返回Person類實例,然後使用它可以調用任何非靜態方法。

0
Person aToddler = Person.createToddler(); 
Person aTeen = Person.createTeenager(); 
Person aPerson = new Person("me", 292);// using a constructor 
    System.out.println(aPerson.getAge()); 

注意在我的代碼中創建幼兒電話沒有參數?你創建的幼兒方法應該沒有參數,因爲答:你沒有使用它們,並且B他們不需要那種方法(可能是名字)。

這就是您可以使用您提供的代碼創建實例變量的方式。希望這可以幫助!

相關問題