跳至主要內容

02. Java具体类

LiuSongLing大约 2 分钟javajavaclass

了解Java中的具体类,并了解它和接口、抽象类有何不同。

1.什么是具体类

具体类,是指用 new 关键字创建出实例的类。

其内的所有方法都实现了,我们称之为具体类。

例如一个 Car 类:

public class Car {
    public String honk() {
        return "beep!";
    }

    public String drive() {
        return "vroom";
    }
}

我们可以实例化它:

Car car = new Car();

在Java 中,一些具体类如:HashMap、HashSet、ArrayList和LinkedList。







2.Java抽象类和具体类

当然,并非所有Java类型都实现了所有方法。 这种灵活性,也称为抽象,使我们能够更笼统地思考我们试图建模的领域。

在Java中,我们可以使用接口和抽象类实现抽象。







2.1 接口

接口是一个类的蓝图。 或者,换句话说,它是未实现的方法签名的集合:

interface Driveable {
    void honk();
    void drive();
}

请注意,它使用 interface 关键字而不是 class

由于Driveable有未实现的方法,我们无法用 new 关键字实例化它。

但是,像Car这样的具体类可以实现这些方法。

JDK提供了许多接口,如 Map、List和Set。







2.2 抽象类

抽象类是一个具有未实现方法的类, 尽管它实际上可以同时具有:

public abstract class Vehicle {
    public abstract String honk();

    public String drive() {
        return "zoom";
    }
}

请注意,我们用关键字 abstract 标记抽象类。

同样,由于Veicle有一个未实现的方法,所以,我们将无法使用 new 关键字实例化抽象类。

JDK的抽象类的一些例子是 AbstractMap 和 AbstractList。



2.3 具体类

具体类没有任何未实现的方法。 无论实现是否继承,只要每个方法都有实现,该类都是具体的。

具体类可以像我们之前的汽车示例一样简单。他们还可以实现接口并扩展抽象类:

public class FancyCar extends Vehicle implements Driveable {
    public String honk() { 
        return "beep";
    }
}

我们可以使用 new 关键字创建一个FancyCar类实例。

FancyCar car = new FancyCar();

简单地说,所有不是抽象的类,我们可以称之为具体类。