【Java】抽象クラス・インタフェースについて(定義方法や使い方について)

Java

はじめに

今回はJavaの「抽象クラス」と「インターフェース」について勉強したことを記載していきたいと思います。

 

抽象クラス

抽象クラスは、処理を持たない抽象的なメソッドを定義できるクラスのことです。

抽象クラス特徴 抽象メソッドを定義することができる
抽象クラスはインスタンス化できないため継承して使用する
抽象クラスを継承したサブクラスは、抽象クラスで定義した抽象メソッドを必ずオーバーライドいなければいけない(抽象クラスを継承した抽象クラスは対象外)
抽象メソッド特徴 処理を持たないメソッドでオーバーライドして使用する。

 

定義

// 抽象クラス
修飾子 abstract class クラス名 {
 // 抽象メソッド
 修飾子 abstract  戻り値型 メソッド名(引数);
}
// 継承方法
修飾子 class クラス名 extends 継承元クラス名 {
}

 

package weapon;

public abstract class Weapon {
    /**
     * 攻撃
     */
    public abstract void attackMotion();
}
package weapon;

public class Sword extends Weapon {
    /**
     * 攻撃
     */
    @Override
    public void attackMotion() {
        System.out.println("斬る");
    }
}
package weapon;

public class Bow extends Weapon {
    /**
     * 攻撃動作
     */
    @Override
    public void attack() {
        System.out.println("打つ");
    }
}

 

インタフェース

インタフェースとは、実体の処理があるメソッドは一つも持たずに使用されるクラスに対しての規格をとりまとめるために使用されます。抽象クラスよりもさらに抽象的な扱いとなる。

インタフェース
特徴

 

基本的に抽象メソッドのみ指定する
(インタフェースに定義したメソッドは自動的に抽象メソッド「public abstract」となる)

クラス変数は定数のみ指定する
(インタフェースに定義した変数は自動的に定数「public static final」となる)

インスタンス化をすることはできず、implementsすることでインタフェースの規格をクラスへ強制することができる(定義した抽象メソッドを必ずオーバーライドしなければいけない)
インターフェースは複数を一度に指定することができる

 

定義

// インタフェース
修飾子 interface インタフェース名 {
}
// 使用クラス
修飾子 class クラス名 implements インタフェース名 {
}

 

package Character;

public interface Character {
    public static final int MAX_DAMAGE = 9999;
    
    public abstract void attack();
}
package Character;

public class Human implements Character {
    /**
     * 攻撃
     */
    @Override
    public void attack() {
        System.out.println("攻撃する");
    }
}
package Character;

public class Creature implements Character {
     /**
     * 攻撃
     */
    @Override
    public void attack() {
        System.out.println("攻撃する");
    }
}

 

抽象クラスとインタフェースの違い

抽象クラス 継承関係の処理の再利用に使用する
インタフェース 関係するクラスに対する規格の強制に使用する

 

ドキュメント

【公式ドキュメント】
Java SE Specifications (oracle.com)

 

最後に

Javaの環境構築は、この記事を参照してみてください。
【開発環境構築】VS CodeでJavaを使用するための環境構築を実施する – SEもりのLog (selifemorizo.com)

以上、ログになります。
これからも継続していきましょう!!

Javaサーバーサイド関連
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

タイトルとURLをコピーしました