声明一个接口并在抽象类Java中实现类

时间:2014-01-24 06:32:52

标签: java interface abstract

我正在做练习,这本书并没有帮助我掌握这个概念,也没有在线资源。这可能看起来很傻但我不知道我错过了什么!我是Java的新手并且已经看过堆栈上的其他示例但无济于事:我需要声明3个接口。每个接口都需要声明一个与其接口名称相同的方法。然后抽象类由3个类扩展,这些类实现上述接口。每个类都需要实例化。如果有人能解释这个程序,我会永远感激。

interface antiLockBrakes{
    public void antiLockBrakes();
}

interface cruiseControl{
    public void cruiseControl();
}

interface powerSteering{
    public void powerSteering();
}

public abstract class Auto{
    abstract class Model1 extends Auto implements antiLockBrakes{
        public abstract void antiLockBrakes();
        Model1 mod1 = new Model1();
        mod1.antiLockBrakes();
    }

    public static void main(String[] args){
    }   
}

2 个答案:

答案 0 :(得分:1)

这是你的问题:有人解释如何准确地声明和界面,然后在抽象类中实现它吧?

以下是答案。

请参阅我们考虑我有一个界面

interface someInterface{
    public void someMethod();
}

现在在抽象类

中实现 someInterface
public abstract class SomeClass implements someInterface{
    public void someMethod(){
              System.out.println("Inside someMethod");
    }
    public abstract myMethod();
}

在类 SomeClass 中看到我们通过给方法 someMethod()定义来实现接口,因为我们希望这个SomeClass是一个抽象类,我们定义了一个抽象方法 myMethod()

现在从SomeClass扩展的任何类都将隐式实现接口someInterface(因为SomeClass已经实现了它),如果它想要someMethod()的自己的定义,它可以覆盖它。但是如果一个子类想要成为一个具体的类(一个所有方法都将具有实现的类),那么它必须为抽象方法myMethod()提供实现。

HTH:)

答案 1 :(得分:0)

这是我喜欢用来看抽象类和接口类之间的区别

接口类

//I say all motor vehicles should look like that :
interface MotorVehicle {


    void run();

    int getFuel();
}

// my team mate complies and write vehicle looking that way
class Car implements MotorVehicle {

    int fuel;

    public void run() {
        System.out.println("Wrroooooooom");
    }

    public int getFuel() {
        return this.fuel;
    }
}

抽象类

// I say all motor vehicles should look like that :
abstract class MotorVehicle2 {

    int fuel;

    // they ALL have fuel, so why let others implement that ?
    // let's make it for everybody
    int getFuel() {
        return this.fuel;
    }

    // that can be very different, force them to provide their
    // implementation
    abstract void run();

}

// my team mate complies and write vehicle looking that way
class Car2 extends MotorVehicle2 {
    void run() {
        System.out.println("Wrroooooooom");
    }
}