【Java】extendsとは??extendsの使い方について解説!!
皆さんは、Javaでコードを書いてる際に、「extends」というキーワードがついているのを見かけるかと思います。
これは「継承」と言われています。継承の目的は、コードが再利用できるようにすることで、
あるクラスで一意の機能のみを記述した場合、残りの共通プロパティと機能は別のクラスから拡張できるようになります。
ですので「継承」を使うことができれば、クラスの作成がとても便利になります。
今回は、「継承」がキーワードであるextendsについて解説していきます。
extendの使い方
extendsは(クラスが別のクラスから継承されることを示している)クラスを拡張します。
Javaでは、あるクラスから別のクラスに属性とメソッドを継承することができ、2つのカテゴリーに分類します。
サブクラス(子): 別のクラスから継承するクラス
スーパークラス(親): 継承元のクラス
継承は、共通のデータメンバーとメソッドを拡張することにより、
既存のクラスに基づいて新しいクラスを定義するプロセスになります。
つまり、継承の最大の利点は基本クラスに既に存在するコードを子クラスで書き直す必要がなくなり、
コードの再利用が可能になることでJavaアプリケーションでの再利用性が向上します。
定義の仕方
1 2 3 4 5 6 7 8 |
class SuperClass { ..... ..... } class SubClass extends SuperClass { ..... ..... } |
継承は、あるクラスが別のクラスのプロパティ(メソッドとフィールド)を取得する
ことができます。
例えば、人間でも、親の遺伝子を受け継いで、元スポーツ選手だった親の子供がスポーツ選手になったり、
歌手だった親の子どもも歌がうまく歌手になったりすると思います。
それは努力もあると思いますが、親の才能を継承していることも要因としてはあると思います。
つまり、extendsを使うことで親のクラスを継承し、クラスを拡張することができます。
コードを書いて実行してみる
extendsを使用したコードを実行してみます。
このコードでは、sampleCalcuとMy_Calcという2つのクラスがあり、extendsを使用して、
My_Calcは、sampleCalcuクラスのメソッドplus()メソッドおよびminus()メソッドを継承しています。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
class sampleCalc { int sum; public void plas(int x, int y) { sum = x + y; System.out.println("sumの計算結果: " + sum); } public void minus(int x, int y) { sum = x - y; System.out.println("sumの計算結果: " + sum); } } public class MyCalc extends sampleCalc { public void multi(int x, int y) { sum = x * y; System.out.println("sumの計算結果: " + sum); } public static void main(String args[]) { int a = 40, b = 50; smpleCalc sample = new sampleCalcu(); sample.plus(a, b); sample.minus(a, b); sample.multi(a, b); } } |
出力結果
sumの計算結果:90
sumの計算結果:-10
sumの計算結果:2000
今回のコードは、MyCalcクラスのオブジェクトが作成されると、
スーパークラスである、sampleCalcクラスの内容がMy_Calcクラスの中に作成されます。
つまり、sampleCalcクラスで作成さているメソッドがMyCalcクラスのなかで使用することができます。
ですので、plus()メソッドおよびminus()メソッドがmian()メソッドで実行されています。
もう一つコードを見てみましょう。
次はmanTokyocollageTeachクラスを作成し、
suzukiクラスがmanTokyocollageTeachクラスを継承しています。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class manTokyocollageTeach { String gender = "男"; String college = "東京大学"; void teach(){ System.out.println("教えることができます。"); } } public class suzuki extends manTokyocollageTeach{ String name = "鈴木" String mainSubject = "心理学"; public static void main(String args[]){ suzuki result = new suzuki(); System.out.println(name); System.out.println(result.college); System.out.println(result.gender); System.out.println(mainSubject); result.teach(); } } |
出力結果
鈴木
東京大学
男
心理学
教えることができます。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。