为什么我们可以对类本身进行操作,但又需要接口呢?

怪异的大卫

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

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

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

那为什么我们需要接口呢?

提前致谢!

亚提·索尼(Yati Sawhney)

一个interface是类可以做什么的契约(或协议,框架或共识)。

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

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

简而言之:类只是该合同的实现,仅此而已

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我们需要使用标记接口?

来自分类Java

为什么我们可以将Java接口转换为* any *非最终类?

来自分类Dev

为什么我们需要在比赛中取消引用可变引用以对其进行更改?

来自分类Dev

出现错误 1004:我们可以对合并的单元格执行此操作.. 为什么?

来自分类Dev

如果必须在if语句中添加中断,为什么我们需要在while操作中注意条件呢?

来自分类Dev

为什么我们需要定义类的静态变量,而在函数内部不定义静态变量呢?

来自分类Java

为什么我们需要Java中的Properties类?

来自分类Dev

为什么我们需要密封类?

来自分类Dev

为什么我们需要GPU进行深度学习?

来自分类Dev

我们可以对xvalue而不是prvalue进行哪些操作或处理,反之亦然

来自分类Dev

为什么我们在实现派生接口的类上重新实现派生接口的父接口

来自分类Dev

为什么我们在实现功能接口时需要编写“实现接口名称”?

来自分类Dev

为什么我们在extjs中需要childEls-在哪里使用呢?

来自分类Dev

既然我们有多播委托,为什么还需要事件呢?

来自分类Dev

我们可以对物理机进行快照吗?

来自分类Java

为什么我们可以使用参数谓词不导入呢?

来自分类Dev

为什么我们需要需求?

来自分类Dev

我们为什么需要`ngDoCheck`

来自分类Linux

为什么我们需要mktemp?

来自分类Dev

为什么我们需要单子?

来自分类Dev

我们为什么需要ʻiteratoreltype()`?

来自分类Dev

我们为什么需要容器?

来自分类Dev

为什么我们需要cmake?

来自分类Dev

为什么我们需要IO?

来自分类Dev

为什么我们需要主键?

来自分类Dev

Java:为什么我们可以从非子类访问字段和方法时需要扩展类

来自分类Dev

我们可以对K均值聚类进行排名或为某些聚类分配权重吗?

来自分类Java

为什么我们需要将Object类作为所有类的基类?

来自分类Java

我们为什么需要内部接口,特别是与私营访问修饰符?

Related 相关文章

  1. 1

    为什么我们需要使用标记接口?

  2. 2

    为什么我们可以将Java接口转换为* any *非最终类?

  3. 3

    为什么我们需要在比赛中取消引用可变引用以对其进行更改?

  4. 4

    出现错误 1004:我们可以对合并的单元格执行此操作.. 为什么?

  5. 5

    如果必须在if语句中添加中断,为什么我们需要在while操作中注意条件呢?

  6. 6

    为什么我们需要定义类的静态变量,而在函数内部不定义静态变量呢?

  7. 7

    为什么我们需要Java中的Properties类?

  8. 8

    为什么我们需要密封类?

  9. 9

    为什么我们需要GPU进行深度学习?

  10. 10

    我们可以对xvalue而不是prvalue进行哪些操作或处理,反之亦然

  11. 11

    为什么我们在实现派生接口的类上重新实现派生接口的父接口

  12. 12

    为什么我们在实现功能接口时需要编写“实现接口名称”?

  13. 13

    为什么我们在extjs中需要childEls-在哪里使用呢?

  14. 14

    既然我们有多播委托,为什么还需要事件呢?

  15. 15

    我们可以对物理机进行快照吗?

  16. 16

    为什么我们可以使用参数谓词不导入呢?

  17. 17

    为什么我们需要需求?

  18. 18

    我们为什么需要`ngDoCheck`

  19. 19

    为什么我们需要mktemp?

  20. 20

    为什么我们需要单子?

  21. 21

    我们为什么需要ʻiteratoreltype()`?

  22. 22

    我们为什么需要容器?

  23. 23

    为什么我们需要cmake?

  24. 24

    为什么我们需要IO?

  25. 25

    为什么我们需要主键?

  26. 26

    Java:为什么我们可以从非子类访问字段和方法时需要扩展类

  27. 27

    我们可以对K均值聚类进行排名或为某些聚类分配权重吗?

  28. 28

    为什么我们需要将Object类作为所有类的基类?

  29. 29

    我们为什么需要内部接口,特别是与私营访问修饰符?

热门标签

归档