Javaの具象クラス

Javaの具象クラス

1. 前書き

このクイックガイドでは、we’ll discuss the term “concrete class” in Java

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

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

A concrete class is a class that we can create an instance of, using the new keyword

つまり、full implementation of its blueprintです。 具体的なクラスが完成しました。

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

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

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

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

Car car = new Car();

JDKの具象クラスの例はHashMap, HashSet, ArrayList, and LinkedList.です。

3. Javaの抽象化と 具象クラス

Not all Java types implement all their methods, though.この柔軟性はabstractionとも呼ばれ、モデル化しようとしているドメインについてより一般的な用語で考えることができます。

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

これらの他のクラスと比較して、具体的なクラスを詳しく見てみましょう。

3.1. インターフェース

An interface is a blueprint for a class。 または、言い換えると、実装されていないメソッドシグネチャのコレクションです。

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

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

Driveable は実装されていないメソッドを共有しているため、new キーワードを使用してインスタンス化することはできません。

しかし、concrete classes like Car can implement these methods.

JDKは、Map, List, and Set.のような多くのインターフェースを提供します

3.2. 抽象クラス

An abstract class is a class that has unimplemented methods,ですが、実際には両方を持つことができます。

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

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

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

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

JDKの抽象クラスの例としてはAbstractMap and AbstractList.があります。

3.3. 具象クラス

対照的に、concrete classes don’t have any unimplemented methods. 実装が継承されているかどうかに関係なく、各メソッドに実装がある限り、クラスは具象です。

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

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

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

As such, it has no unimplemented methods。 したがって、newキーワードを使用してFancyCarクラスインスタンスを作成できます。

FancyCar car = new FancyCar();

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

4. 概要

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

さらに、インターフェイスとコンクリートクラスと抽象クラスの違いを示しました。