Javaで多重継承を実装する方法【extendsとinterfaceのサンプルコード解説】
この記事では、Javaで多重継承(Multiple Inheritance)を実装する方法について詳しく解説します。
Javaはクラスに対する多重継承をサポートしていません。つまり、1つのクラスが複数のクラスを同時に継承することはできません。これは、複数の親クラスが同名のメソッドを持つ場合に動作が曖昧になる「ダイヤモンド問題」を言語仕様レベルで回避しているためです。
しかし、extendsキーワードを使った多段継承(階層的な継承)や、interfaceの実装を組み合わせることで、多重継承と同等の結果を得ることが可能です。
アルゴリズム
Step 1 – 開始
Step 2 – Server、connection、my_test の3つのクラスを宣言する
Step 3 – extendsキーワードを使ってクラス同士を関連付ける
Step 4 – mainメソッドから各クラスのオブジェクトを呼び出す
Step 5 – 終了
例1:extendsを使った多段継承
以下の例では、「Server → Java → connection」という順序でクラスを継承しています。子クラスは、直接の親クラスだけでなく、その祖先にあたるすべてのクラスのメソッドを呼び出せる点がポイントです。
class Server{
void my_frontend(){
System.out.println("Connection to frontend established successfully");}
}
class Java extends Server{
void my_backend(){
System.out.println("Connection to backend established successfully");
}
}
class connection extends Java{
void my_database(){
System.out.println("Connection to database established successfully");
}
}
public class my_test{
public static void main(String args[]){
connection my_connection=new connection();
my_connection.my_database();
my_connection.my_backend();
my_connection.my_frontend();
}
}出力結果
Connection to database established successfully
Connection to backend established successfully
Connection to frontend established successfully
例2:interfaceを使った多重継承
Javaで多重継承を実現する最も一般的な方法がインターフェースです。クラスは複数のインターフェースを同時に実装(implements)できるため、あたかも複数の親から機能を受け継いでいるかのような設計が可能になります。
次の例では、飲食に関する「My_restaurents」と移動に関する「My_journey」という2つのインターフェースを、1つのHolidayクラスが実装しています。
interface My_restaurents {
void eat();
}
interface My_journey {
void travel();
}
class Holiday implements My_restaurents, My_journey {
public void eat() {
System.out.println("I am trying this food");
}
public void travel() {
System.out.println("I am trying this route");
}
}
public class My_trip {
public static void main(String args[]) {
Holiday my_schedule = new Holiday();
my_schedule.eat();
my_schedule.travel();
}
}出力結果
I am trying this food
I am trying this route
まとめ
Javaでは安全性の観点からクラスの多重継承は許可されていませんが、extendsによる多段継承で親クラスの機能を引き継ぐこと、またinterfaceの複数実装によって複数の型として振る舞うことができます。異なる種類の機能を1つのクラスに持たせたい場合は、インターフェースを使うのがJavaらしいベストプラクティスと言えるでしょう。
-
正方形の面積を求めるJavaプログラムの書き方【初心者向け解説】
この記事では、Javaを使って正方形の面積を求める方法をわかりやすく解説します。正方形の面積は、次の公式で計算できます。辺 × 辺つまり s2正方形の面積の計算式正方形の1辺の長さを s とすると、その面積は s2(辺の2乗)で表されます。下図のように、縦と横が同じ長さの図形であるため、辺同士を掛け合わせるだけで面積が求まります。入力例1辺の長さ : 4出力例正方形の面積 : 16アルゴリズム処理の流れは以下の手順になります。Step 1 - 開始Step 2 - 整数型の変数 my_side(辺の長さ)と my_area(面積)を宣言するStep 3 - ユーザーから値を読み込む、または値を
-
Javaでカウンタープログラムを実装する方法をわかりやすく解説
この記事では、JavaのSwingを使ってシンプルなカウンター(数を数える)アプリケーションを実装する方法を解説します。このプログラムでは、JLabelでカウント用のラベルを表示し、JTextFieldで現在のカウント値を保持し、JButtonで「追加(Add)」「削除(Remove)」「リセット(Reset)」の3つのボタンを作成します。 「Add」ボタンをクリックするとJTextField内のカウントが1ずつ増加し、「Remove」ボタンをクリックすると1ずつ減少します。さらに「Reset」ボタンをクリックすると、カウントは0にリセットされます。 実装例 import java.awt.*