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

Java 为什么我们需要接口,而我们可以对类本身做同样的事情?,java,Java,考虑我下面的代码,它用于使用界面预订机票 import java.io.*; interface FlightDetails { void getFlightDetails(); void book(Ticket ticket); } class AirIndia implements FlightDetails { public void getFlightDetails() { System.out.println("Flight Details

考虑我下面的代码,它用于使用界面预订机票

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());
        }
    }
}

通过编写单独的类并为各个航班创建对象,上述实现可以在不使用接口的情况下完成

那为什么我们需要界面


提前谢谢

接口是类可以做什么的契约(或协议,或框架或共识)

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

接口定义了一组常见的行为。类实现了与这些行为一致的接口,并为这些行为提供了它们自己的实现。这允许您在接口处编程,而不是实际实现

简言之:
类只是该契约的一个实现,没有其他任何东西

毫无疑问,即使此时没有接口,您的代码也可以工作,但是。实现一个接口可以使一个类在其承诺提供的行为方面变得更加正式。接口在类和外部世界之间形成契约,编译器在构建时强制执行该契约。如果类声明实现接口,则该接口定义的所有方法必须出现在其源代码中,然后该类才能成功编译


例如,如果您有多个飞行类,每个实现飞行细节,如果稍后您想更改FLUTIONTIFY接口的结构,它可以帮助您更轻松地改变所有飞行类的结构

< P>当类实现一个接口时,它定义或重写接口的空白函数/方法。实现接口的所有类都同意定义接口的方法(如契约)

用途:

接口用于编码不同类型的类共享的相似性,但不一定构成类关系

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


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

接口隐藏了类的实现细节,它还允许从不同的基类扩展类,而基类仍然遵循
接口
契约“通过编写单独的类并为各自的航班创建对象,上述实现可以在不使用接口的情况下完成“试着去做,看看是什么样子。现在想象一下,如果你需要对对象做一些工作,然后返回它,你会返回什么?接口的优势在于提供泛型类型,这是以类似的方式处理不同类型的对象的概念。这个问题的答案就在“接口”的基础上。你应该首先考虑挖掘OOP概念,现在我清楚地理解了概念。