如何在Java中的抽象类中实现接口并扩展线程

Mordsith_T

我正在努力满足作业的要求……“包括至少一个接口,该接口至少包含实现类必须实现的一种方法。”

当我尝试实例化该接口时,它说它无法实例化该接口。我不确定自己在做什么错。

我尝试了几种方法使其工作。

//main class
public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {

        Ford mustang = new Ford("Mustang", 135, 125);
        Chevrolet camero = new Chevrolet("Camero", 202, 100);
        Dodge challenger = new Dodge("Challenger", 203, 75);        

        Nitrous nitro = new Nitrous();//problem code

        mustang.start();
        camero.start();
        challenger.start();
    }

}

//Abstract class
public abstract class Vehicle extends Thread implements Nitrous {

    private String model;
    private int speed;
    private int boost;

    public Vehicle(String model, int speed, int boost) {
        this.model = model;
        this.speed = speed;
        this.boost = boost;
    }

    public String getmodel() {
        return model;
    }

    public void setmodel(String model) {
        this.model = model;
    }

    public int getspeed() {
        return speed;
    }

    public void setspeed(int speed) {
        this.speed = speed;
    }

    public int getboost() {
        return boost;
    }

    public void setboost(int boost) {
        this.boost = boost;
    }


    @Override
    public void run() {
        try {
            go();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    private void go() throws InterruptedException {
        int trackLength = 5000;
        int checkPointPassed = 0;
        for (int i = 0; i < trackLength; i += (speed + boost)) {
            if (checkPointPassed * 1000 < i) {
                checkPointPassed++;
                System.out.println("The " + this.model + " has passed check point " + checkPointPassed);
//              System.out.println(nos);
                Thread.sleep(10);
            }
        }
    }

}

//subclass one of three
public class Ford extends Vehicle {

    public Ford (String model, int speed, int boost) {

        super(model, speed, boost); 

    }

    @Override
    public void nos() {
        // TODO Auto-generated method stub
        System.out.println("The cars have Nitro!");
    }

}

public class Chevrolet extends Vehicle{

    public Chevrolet(String model, int speed, int boost) {
        // TODO Auto-generated constructor stub.
        super(model, speed, boost);
    }

    @Override
    public void nos() {
        // TODO Auto-generated method stub
        System.out.println("The cars have Nitro!");
    }

}

public class Dodge extends Vehicle{

    public Dodge(String model, int speed, int boost) {
        // TODO Auto-generated constructor stub
        super(model, speed, boost);
    }

    @Override
    public void nos() {
        // TODO Auto-generated method stub
        System.out.println("The cars have Nitro!");
    }

}

//Interface

public interface Nitrous {

    public void nos();
}

这是一场比赛,其中三辆赛车具有亚硝酸盐的助推作用。我选择将Nitrous设置为界面。您可以在我的代码中看到我尝试了多种方法使其正常工作,但都没有成功。我什至不知道我是如何做到这一点还是很遥远。

Glains

接口仅提供有关特定类可以实现该目标的蓝图为了给您一个具体的例子,请考虑interface Fruit

public interface Fruit {

  void eat();

}

现在,实例化接口已经没有意义,因为它只是一个抽象。但是,实际创建类Banana对象是有意义的Apple由于这些都是水果,因此可以吃。

for (Fruit f : fruits) {
  f.eat();
}

由于您的Vehicle类实现了Nitrous,因此也可以将其所有子类都分配给该特定类型,并且它们履行其合同,即nos()

Ford mustang = new Ford("Mustang", 135, 125);

Nitrous asNitrous = mustang; // works
mustang.nos(); // works

相关:面向对象编程中接口的定义是什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章