【发布时间】:2018-05-23 05:14:33
【问题描述】:
考虑我下面的代码,它用于使用界面预订机票
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());
}
}
}
通过编写单独的类并为各个航班创建对象,可以在不使用接口的情况下完成上述实现
那我们为什么需要接口呢?
提前致谢!
【问题讨论】:
-
interface隐藏了类的实现细节,它还允许从不同的基类扩展该类,该基类仍然遵守interface契约 -
"通过编写单独的类并为各个航班创建对象,可以在不使用接口的情况下完成上述实现" 尝试实际这样做,看看它是什么样的。现在想象一下,如果你需要对对象做一些工作然后返回它,你会返回什么?
-
接口的优势在于提供泛型类型,即以类似方式处理具有不同类型的对象的概念。
-
这个问题的答案在于“接口”的基础知识。您应该首先考虑深入研究 OOP 概念。
-
现在我清楚地理解了这个概念
标签: java