1. 序章

このクイックガイドでは、Javaの「コンクリートクラス」という用語について説明します。

まず、用語を定義します。 次に、それがインターフェースや抽象クラスとどのように異なるかを見ていきます。

2. 具体的なクラスとは何ですか?

具象クラスは、新しいキーワードを使用してインスタンスを作成できるクラスです。

言い換えれば、それはその青写真完全な実装です。 具体的なクラスが完成しました。

たとえば、Carクラスを想像してみてください。

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

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

すべてのメソッドが実装されているため、これを具象クラスと呼び、インスタンス化できます。

Car car = new Car();

JDKの具象クラスの例としては、 HashMap、HashSet、ArrayList、LinkedListなどがあります。

3. Java抽象化と 具体的なクラス

すべてのJavaタイプがすべてのメソッドを実装しているわけではありません。この柔軟性は抽象化とも呼ばれ、モデル化しようとしているドメインについてより一般的な用語で考えることができます。

Javaでは、インターフェースと抽象クラスを使用して抽象化を実現できます。

具体的なクラスを他のクラスと比較して、よりよく見てみましょう。

3.1. インターフェース

インターフェースはクラスの青写真です。 または、言い換えると、実装されていないメソッドシグネチャのコレクションです。

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

class。の代わりにinterfaceキーワードを使用することに注意してください。

ドライブ可能には実装されていないメソッドがあるため、新しいキーワードでインスタンス化することはできません。

ただし、Carのような具象クラスはこれらのメソッドを実装できます。

JDKは、 Map、List、Setなどの多数のインターフェースを提供します。

3.2. 抽象クラス

抽象クラスは、実装されていないメソッドを持つクラスです。実際には、次の両方を持つことができます。

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

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

キーワードabstractで抽象クラスをマークすることに注意してください。

繰り返しになりますが、 Vehicleには実装されていないメソッドhonkがあるため、新しいキーワードを使用できなくなります。

JDKの抽象クラスの例としては、AbstractMapおよびAbstractList。があります。

3.3. 具体的なクラス

対照的に、 具象クラスには、実装されていないメソッドはありません。 実装が継承されているかどうかに関係なく、各メソッドに実装がある限り、クラスは具象です。

具体的なクラスは、前のCarの例と同じくらい単純にすることができます。 また、インターフェイスを実装し、抽象クラスを拡張することもできます。

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

FancyCar クラスは、 honk の実装を提供し、Vehicleからdriveの実装を継承します。

そのため、実装されていないメソッドはありません。 したがって、newキーワードを使用してFancyCarクラスインスタンスを作成できます。

FancyCar car = new FancyCar();

または、簡単に言えば、抽象ではないすべてのクラスを具体的なクラスと呼ぶことができます。

4. 概要

この短いチュートリアルでは、具体的なクラスとその仕様について学びました。

さらに、インターフェースと具象クラスおよび抽象クラスの違いを示しました。