为什么我们使用抽象

时间:2019-06-21 06:58:48

标签: java

我知道什么是抽象,但是我想知道使用抽象的目的是什么,如果我们必须实现所有功能,为什么不只是编写它们 例如

interface Moveable{
     public void move();
}
class Human implements Moveable{
    public void move(){
          System.out.println("walk");
    }

 }

 //or just write (why use abstraction)

class Human{
    public void move(){
          System.out.println("walk");
    }

}

2 个答案:

答案 0 :(得分:1)

有用的抽象用于获得对复杂性的控制。

没有这些有用的抽象,您的第一堂课的前5行会更容易编写。但是在现实世界中,任何有价值的东西都会随着时间增长。用户需要其他功能,出现错误并需要修复等。

如果您不准备为接下来的500行代码做准备,那么在下一个类中,那么该代码将迅速变成维护方面的噩梦。

换句话说:现实世界太复杂了,无法在代码中完全表示出来。因此,您必须预见到应用程序中至关重要的基本“模式”,并找到以更简洁的方式表达它们的方法。

在您的示例中,是的,只有一个类可实现该接口。但是,如果您有50堂课或100堂课怎么办?然后,您的客户代码将必须知道Human,Cat,Dog,Snake等……所有这些类都有一个move()方法。这真的比能够检查“该类是否实现了Moveable接口吗?简单吗?!

答案 1 :(得分:1)

使用抽象有两个原因。首先支持推理和沟通;如果考虑到人的主要方面是他或她可以走路,那么对运动的东西的清晰观察是合适的。第二,提供不同实现的统一。假设还有第二种实现方式。

class Tiger implements Moveable{
    public void move(){
        System.out.println("stalk");
    }
}

接口Moveable提供了访问通用类型的统一方法。话虽如此,如果只有一个接口的实现,则该接口在技术上不是必需的,但仍可以提供实现的清晰度和可伸缩性。