将一个类与另一个类相关联。主/从类

时间:2015-10-10 22:31:34

标签: java

在我的主程序中(老师给我测试程序,我必须构建与他的主程序一起运行的类)我的代码看起来像这样

插入aPlug = aSwitch.wherePlug();

插件是另一个类

aSwitch是在代码中先前创建的对象(Switch aSwitch = newSwitch();)

whereplug()是 Switch 类中与"关联的方法"使用 Plug 类。

public Plug wherePlug(){
}

每次我尝试编码并返回一个值,我总是得到不兼容的类型错误,无法将插件转换为布尔值。

我的问题是如何与班级联系起作用?一个班级和另一个班级。换句话说,一个类依赖于另一个类。

程序的目的是当交换机被切换时它改变了插头状态的状态。

我在下面添加了代码,任何人都可以告诉我如何修复它。

公共课StudentDriver {

public static void main(String[] args)
{
    System.out.println("Testing Switch Methods\n_________________________________");
    System.out.println("Making a new Switch with the no constructor having no parameters");
    Switch aSwitch= new Switch();
    System.out.println("After construction, Switch is on?: " + aSwitch.state());
    aSwitch.flip();
    System.out.println("After flipping, Switch is on?: " + aSwitch.state());
    System.out.println("Making a new Switch with constructor having its parameter set to true");
    aSwitch= new Switch(true);
    System.out.println("After construction, Switch is on?: " + aSwitch.state());
    aSwitch.flip();
    System.out.println("After flipping, Switch is on?: " + aSwitch.state());


    System.out.println("\nTesting Plug Methods\n_________________________________");
    ***Plug aPlug = aSwitch.wherePlug();***
    System.out.println("Switch is on? " + aSwitch.state() +
        " Plug is on? " + aPlug.state());
    aSwitch.flip();
    System.out.println("Switch is on? " + aSwitch.state() +
        " Plug is on? " + aPlug.state());
    }
}

公共类Switch {

boolean stateSw;     
public Switch()    {
   stateSw = false;}

public Switch(boolean initalState)    {
    stateSw = initalState;    }

public boolean state()    {
    return stateSw;    }

public void flip()    {
    if(stateSw == true)        {
        stateSw = false;}
    else if (stateSw == false)        {
        stateSw = true;}    }

***public Plug wherePlug()    {
return stateSw;  }***

}

public class Plug {

boolean statePlug = false;    

public Plug()    {
    statePlug = false;}

public boolean state()    {                
    return statePlug;}

}

2 个答案:

答案 0 :(得分:0)

罪魁祸首是:

public Plug wherePlug() {
    return stateSw;  
}

您声明wherePlug()必须返回Plug,而是返回boolean(即stateSw)。

目前还不清楚你在这里要做什么,所以我不能确切地说如何修复它。但是,看看你是否可以更改代码,以便wherePlug()不返回Plug(或者你可以完全摆脱wherePlug())。这将导致类Switch对类Plug没有任何依赖关系;消除依赖关系几乎总是一个好主意。

答案 1 :(得分:0)

在Switch类中创建一个Plug对象,称之为idontcare

public Plug wherePlug()
    {
        return idontcare;
    }

另外,当你返回插头idontcare时,你需要让插头idontcare中的statePlug成为现实。怎么样?好吧,这是你的功课。 =)