如何在不同类的构造函数中使用对象?

时间:2013-10-30 17:29:34

标签: java

我正在尝试在构造函数中使用对象,该对象是我的Date类。 我不确定,但我想我应该使用一个界面。

public class Date {

private int day;
private int month;
private int year;

public Date(int day, int month, int year) {
    this.year = year;
    checkMonth(month);
    checkDay(day);
}

public void checkMonth(int monthIn)
{
    if(monthIn < 1 || monthIn > 12)
    {
        System.out.print("the month is invalid");
    }
    else
    {
        month = monthIn;
    }
}
public void checkDay(int dayIn)
{
    if(dayIn < 1 || dayIn > 31)
    {
        System.out.print("the day is invalid and has been set to 1");
        day = 1;
    }
    else
    {
        day = dayIn;
    }
}

public int getDay()
{
    return day;
}
public int getMonth()
{
    return month;
}
public int getYear()
{
    return year;
}

public String toString()
{
    return "birth date: " + getDay() + "/" + getMonth() + "/" + getYear();
}
}

和一个Employee类(最后的public void add()只是试错而不确定它是否应该存在)

public abstract class Employee {

private String fName;
private String lName;
private int rsiNumber;
private Date DOB;

public Employee(String fName, String lName, int rsiNumber, Date DOB)
{
    this.fName = fName;
    this.lName = lName;
    this.rsiNumber = rsiNumber;
    this.DOB = DOB;
}

public String getFName()
{
    return fName;
}
public String getLanme()
{
    return lName;
}
public int getRsiNumber()
{
    return rsiNumber;
}
public Date getDOB()
{
    return DOB;
}

public void setFName(String fNameIn)
{
    fName = fNameIn;
}
public void setLName(String lNameIn)
{
    lName = lNameIn;
}
public void setRsiNumber(int rsiNumIn)
{
    rsiNumber = rsiNumIn;
}
public void setDOB(Date DOBIn)
{
    DOB = DOBIn;
}

public String toString()
{
    return null;
}
public void add(Date x)
{
    DOB  = x;
}
}

与Employee的其他一些子类一起使用。 我正在尝试使用Date作为Employee的构造函数中的对象,但是当我创建Test类时,我收到一条错误,指出构造函数尚未定义。

最近几天我在大学生病了,不知道如何让它发挥作用。

这是我的测试

public class Test {

public static void main(String [] args)
{

    Employee employees[] ={
            new Salaried("Joe", "Bloggs", "R5457998", 6, 15, 1944, 800.00 ),
            new Hourly( "Kate", "Wyse", "S6657998", 10, 29, 1960, 16.75, 40 ),
            new Commission("Jim", "Slowe", "K5655998", 9, 8, 1954, 10000, .06 )};



}
}

4 个答案:

答案 0 :(得分:0)

new Hourly( "Kate", "Wyse", "S6657998", new Date(10, 29, 1960), 16.75, 40 ),

答案 1 :(得分:0)

如果您使用合成,您的问题将得到解决。您应该在main中创建一个Date对象。

    {  Employee employees[] ={
        new Salaried("Joe", "Bloggs", "R5457998",new Date( 6, 15, 1944), 800.00 ),
        new Hourly( "Kate", "Wyse", "S6657998",,new Date (10, 29, 1960), 16.75, 40 ),
        new Commission("Jim", "Slowe", "K5655998",,new Date( 9, 8, 1954), 10000, .06 )};}

答案 2 :(得分:0)

我不确定最后两个参数是什么,但是要使用现有的构造函数,你必须做类似以下的事情。

public static void main(String [] args)
{

    Employee employees[] ={
        new Salaried("Joe", "Bloggs", "R5457998", new Date(6, 15, 1944)),
        new Hourly( "Kate", "Wyse", "S6657998", new Date(10, 29, 1960)),
        new Commission("Jim", "Slowe", "K5655998", new Date(9, 8, 1954))
    };

}

答案 3 :(得分:0)

您应该在Employee声明:new Salaried("Joe", "Bloggs", "R5457998", new Date(6, 15, 1944), 800.00)

的数组中执行此操作

您的Salaried结构应为:

public Salaried((String fName, String lName, int rsiNumber, Date DOB, float f){
    super(fname, lname, rsiNumber, dob);
    this.f=f;
}