为什么我的继承应用程序不起作用?

Sco*_*n83 0 java inheritance extends

我正在做一个过去的学校工作,它是关于微波应用程序与儿童班,时钟.不知怎的,有些人,我对我的代码感到困惑,完全迷失了.有人可以帮我这些吗?谢谢!

在此输入图像描述

首先是Clock类.

class Clock extends Microwave {

private int hour;
private int minute;
private int second;

Clock()
{
    hour = 0;
    minute = 0;
    second = 0;     
}

Clock(int h, int m, int s)
{
    hour = h;
    minute = m;
    second = s;
}

public int getHour()
{
    return hour;
}

public int getMin()
{
    return minute;
}

public int getSec()
{
    return second;
}

public String toString()
{
    return (String.valueOf(second));
}

protected void tick()
{
    second++;

    if(hour == 23 && minute == 59 && second == 59)
    {
        hour = 0;
        minute = 0;
        second = 0;
    } else if(minute == 59 && second == 59)
    {
        hour++;
        minute = 0;
        second = 0;
    } else if(second == 59)
    {
        minute++;
        second = 0;
    }
}
}
Run Code Online (Sandbox Code Playgroud)

接下来将是父类Microwave.

class Microwave {

private int maxPower;
private int currentPower;
private Clock theClock;

Microwave()
{
    maxPower = 500;
    currentPower = 500;
    theClock = new Clock();
}

Microwave(int maxp, Clock theClock)
{
    maxPower = maxp;
    currentPower = maxPower;
    theClock = new Clock();
}

public int getCurrentPower()
{
    return currentPower;
}

public int getMaxPower()
{
    return maxPower;
}

public String getTime()
{
    return "The time is " + theClock.getHour() + ":" + theClock.getMin() + ":" + theClock.getSec();
}

protected void cook(int p, int t)
{
    if(p < maxPower)
    {
        currentPower = p;
    } else
    {
        System.exit(0);
    }

    for(int i = 0; i < t; i++)
    {
        theClock.tick();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

最后,主要方法类.

class TestMicrowave
{
 public static void main(String []args)
 { 
    Clock  c = new Clock(14, 30,30);
    Microwave  m = new Microwave(750, c);
    System.out.println("The microwave is currently at " + 
                     m.getCurrentPower() + " watts and "+ m.getTime());


     m.cook(600,45);    // should advance time to  14:31:15

     System.out.println(m.getTime());

     m.cook(800,45);    // shoudln't cook as power > maxPower
     System.out.println(m.getTime());

 }
 }
Run Code Online (Sandbox Code Playgroud)

我认为,我在Microwave类中的getTime()方法有问题,但我不知道它有什么问题.提前致谢!

Oli*_*ins 6

时钟不是儿童班.微波炉是一个时钟的组成部分.从Clock类中删除'extends Microwave'.

在这个设计中不应该有任何继承.

  • 子类提供"IS-A"关系,时钟不是微波.然而微波`HAVE-A`Clock是组成. (3认同)