1前書き

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

まず、用語を定義します。それでは、それがインターフェースや抽象クラスとどう違うのかがわかります。

** 2具象クラスとは

  • 具象クラスは

    new

    キーワードを使ってインスタンスを作成できるクラスです** 。

言い換えれば、それはその青写真の

完全な実装

です。具体的な授業は完了です。

たとえば、

__ Car

__classを想像してみてください。

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

    キーワードを使用することに注意してください。


__Driveable


は未実装のメソッドであるため、


new

__キーワードでインスタンス化することはできません。

しかし、

__ Car

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

JDKは**

Map



List

、および

Set

のような多数のインタフェースを提供します。


3.2. 抽象クラス

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

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

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

  • 抽象クラスをキーワード

    abstract

    でマークすることに注意してください。

繰り返しますが、

Vehicle

には未実装のメソッド

honk

があるため、

__new

__キーワードを使用することはできません。

JDKの抽象クラスの例としては、**

AbstractMap

および

AbstractList

があります。


3.3. 具体的なクラス

対照的に、


具象クラスには実装されていないメソッドはありません。


実装が継承されているかどうかにかかわらず、各メソッドに実装がある限り、クラスは具体的です。

具象クラスは、先ほどの

Car

の例と同じくらい単純になることがあります。それらはインターフェースを実装し抽象クラスを拡張することもできます。

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


__FancyCar


classは、

honk

の実装を提供し、

Vehicle.

から

drive__の実装を継承しています。

そのため、未実装のメソッドはありません。したがって、

new

キーワードを使用して

FancyCar

クラスのインスタンスを作成できます。

FancyCar car = new FancyCar();

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


4概要

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

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