为什么我们需要接口,而我们可以对类本身做同样的事情?

时间:2018-05-23 05:14:34

标签: java

考虑下面的代码,该代码用于使用界面

预订机票
import java.io.*;

interface FlightDetails {
    void getFlightDetails();
    void book(Ticket ticket);
}

class AirIndia implements FlightDetails {
    public void getFlightDetails() {
        System.out.println("Flight Details of Air India");
    }

    public void book(Ticket ticket) {
        System.out.println("Ticket booked in Air India");
    }
}

class Emirates implements FlightDetails {
    public void getFlightDetails() {
        System.out.println("Flight Details of Emirates");
    }

    public void book(Ticket ticket) {
        System.out.println("Ticket booked in Emirates");
    }
}

class Lufthansa implements FlightDetails {
    public void getFlightDetails() {
        System.out.println("Flight Details of Lufthansa");
    }

    public void book(Ticket ticket) {
        System.out.println("Ticket booked in Lufthansa");
    }
}

class Ticket{

}

public class InterfaceFlight {
    public static void main(String[] args) throws IOException {
        FlightDetails flight = null;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("1.Air India\n2.Emirates\n3.Lufthansa");
        System.out.print("Enter choice = ");
        int choice = Integer.parseInt(br.readLine());
        if(choice == 1){
            flight = new AirIndia();
            flight.book(new Ticket());
        } else if(choice == 2){
            flight = new Emirates();
            flight.book(new Ticket());
        } else if(choice == 3){
            flight = new Lufthansa();
            flight.book(new Ticket());
        }
    }
}

通过编写单独的类并为相应的航班创建对象,可以在不使用界面的情况下完成上述实施

那为什么我们需要接口?

提前致谢!

3 个答案:

答案 0 :(得分:2)

interface是类可以做什么的合同(或协议,或骨架或共同理解)。

当一个类实现某个接口时,它承诺为接口中声明的所有抽象方法提供实现。

接口定义了一组常见行为。类实现接口同意这些行为并为行为提供自己的实现。这允许您在界面上进行编程,而不是实际的实现。

简而言之:  一个类只是该合同的一个实现

答案 1 :(得分:0)

毫无疑问,即使没有界面,你的代码也能正常工作,但是。实现接口允许类对其承诺提供的行为变得更加正式。接口在类和外部世界之间形成契约,并且该合同在构建时由编译器强制执行。如果您的类声称实现了一个接口,那么该接口定义的所有方法必须出现在其源代码中才能成功编译该类。

例如,如果您有多个Flight类,每个都实现FlightDetails,如果您想要更改FlightDetails接口的结构,它可以帮助您更轻松地更改所有Flight类的结构

答案 2 :(得分:0)

当类实现接口时,它定义或覆盖接口的空白函数/方法。所有实现接口的类都同意定义接口的方法(如合同)。

用途:

接口用于编码各种类别共享的相似性,但不一定构成类关系。

接口的另一个用途是能够使用多重继承。

接口是一种工具,用于确保具有相似行为的类实现产生这些行为的必要方法。