在创建对象时,构造函数不能应用于给定类型

时间:2017-06-20 19:43:26

标签: java constructor tostring

   public class TestPerson
{
public static void main(String args[])
{
    Person p1 = new Person();
    Person p2 = new Person();
    System.out.println(p1);
    System.out.println(p2);

}
}

这是另一个班级。

public class Person
{
private String name;
private MyDate dob;

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

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


public String getName()
{
    return name;
}
    public String toString()
{
    return "Name: " + getName();
}
}

这是另一个

public class MyDate
{
private int month;
private int day;
private int year;

public MyDate(int month, int day, int year)
{

    this.month = month;
    this.day = day;
    this.year = year;
}

public void setMonth(int m)
{
        this.month = m;
}
public void setDay(int d)
{
        this.day = d;
}

public void setYear(int y)
{
        this.year = y;
}
public int getMonth()
{
    return month;
}
public int getDay()
{
    return day;
}

public int getYear()
{
    return year;
}
    public String toString()
{
    return "\nBirthdate: " + this.month + "-" + this.day + "-" + this.year;
}
}

构造函数不是它也说的唯一错误:

  

Person.java:56:错误:预期的类,接口或枚举           public String toString()                  ^ Person.java:59:错误:预期的类,接口或枚举           }           ^

这是代码的一半,我的真正目标是创建一个代码,输入两个相同的名称和生日(月日),并使用相等和哈希码进行比较,我没有包含该代码,因为这会导致更多错误。从修复小孩子开始。现在我不能相信我在这里有错误,我已经完成了这个,但不是在一个类中获取所有变量并在另一个类中声明它的情况(Mydate dob)

1 个答案:

答案 0 :(得分:0)

你就是不能这样做

Person p1 = new Person();
Person p2 = new Person();

因为没有为该类定义默认构造函数,而是传递一个字符串和一个MyDate实例

Person p1 = new Person("xoce", new MyDate(20, 06, 1999));
Person p2 = new Person("maria", new MyDate(20, 12, 1999));