2015-07-11 44 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他们不需要那种方法(可能是名字)。

这就是您可以使用您提供的代码创建实例变量的方式。希望这可以帮助!

相关问题