支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • 【Java】クラスの継承及びコンスト

〇はじめに

・ クラスの継承とは、新しく機能を作成する際、以前作成した機能と共通する部分を引き継ぐことであり、 共通部分は一つにまとめて繰り返し利用できるようにする機能です。 よって、何度も似たようなプログラムを記述する必要がなく、作業の効率化やソースコード全体を見やすくすることが可能となります。 また、Javaの様なオブジェクト指向のプログラミングの基本的な概念でもあります。 継承の1つ目のメリットとしては、既存機能を引き継ぐことが可能なため、何度も同様のプログラムを記述せずに済むことです。 システム開発やアプリを開発行う際は、膨大な量のプログラムを記述する必要がありますが、継承によって同様のプログラムを記述する手間が省け、生産効率を向上させることが可能となります。 2つ目のメリットは、継承を行うことにより見やすいレイアウトでプログラムを記述でき、バグや不備が起こる可能性を抑えられることが可能です。システムやアプリの運用には保守業務が欠かせない為、保守が読みやすく見やすいプログラムであるに越したことはありません。

◎継承の書式

1. class サブクラス名 extends スーパークラス名 {
2. }

・ クラスの継承を行う場合、継承元をスーパークラス(親クラス)と呼び、 継承先をサブクラス(子クラス)と呼びます。 継承後、サブクラスではスーパークラスのメソッドや変数が使用可能となります。 下記のサンプルコードは、顧客の「氏名」、「住所」、「ID」を出力するプログラムです。 SubUserクラスはUserクラスを継承しているため、 SubUserクラスで再度、顧客の「氏名」と「住所」の記述行う必要はありません。

◎サンプルコード

1. class User{
2.   String UserName;  //顧客氏名
3.   int UserAddress;   //顧客住所
4. 
5.   public void setName(String name){
6.     UserName = name;  //顧客氏名をセット
7.   }
8.   public void getName(){
9.     return UserName;  //顧客氏名を返す
10.   }
11.   public void setAddress(String address){
12.     UserAddress = address;  //顧客住所をセット
13.   }
14.   public void getAddress(){
15.     return UserAddress;  //顧客住所を返す
16.   }
17. }
18. 
19. class SubUser extends User{
20.   int UserID;  //顧客ID
21. 
22.   public void setID(int number){
23.     UserID = number;  //顧客IDをセット
24.   }
25.   public int getID(){
26.     return UserID;  //顧客IDを返す
27.   }
28. }
29. 
30. public class Example{
31.   public static void main(string[] args){
32.     SubUser subuser = new SubUser();  //subuserをインスタンス化する
33. 
34.     subuser.setName("subuser");
35.     subuser.setAddress("Yodogawa-ku, Osaka");
36.     subuser.setID(01);
37. 
38.     System.out.println(subuser.getName());  //氏名を出力
39.     System.out.println(subuser.getAddress());  //住所を出力
40.     System.out.println(subuser.getID());  //IDを出力
41.   }
42. }

◎実行結果

1. subuser
2. Yodogawa-ku, Osaka
3. 01

◎継承の注意点

・ プログラムを記述する際、便利な「継承」ですが、Javaのクラスで継承を使用する際、 1つのサブクラスが継承可能なのは1つのスーパークラスのみであり、2つ以上のスーパークラスを継承することはできないので注意が必要です。 また、「final修飾子が付いたスーパークラスの継承不可」「スーパークラス内のprivate修飾子の付いた変数やメソッドはサブクラスから利用不可」にも気を付ける必要があります

〇はじめに

・ コンストラクタとはnew演算子を使用し、オブジェクト生成時にクラス名と同名のメソッドを一度だけ実行処理が行われます。 主にクラスのメンバ変数を初期化する際に使用します。 コンストラクタはオブジェクト生成時に呼び出される特別なメソッドで、 通常のメソッド同様、引数を指定することも可能です。 コンストラクタの呼び出しは、以下のように記述します

◎コンストラクタの書式

1. public class メインクラス名{
2.   public static void main(String[] args) {
3. 
4.     //インスタンスの生成
5.     クラス名 変数名 = new クラス名();
6.   }
7. }
8. 
9. class クラス名{
10. 
11.    //コンストラクタ(オブジェクト生成時に実行)
12.    public クラス名(){
13.     初期化処理など
14.    }
15. }

◎サンプルコード

1. // Sample01.java
2.  class Sample01 {
3.   String str = "こんにちは";
4. 
5.    // コンストラクタ
6.    public Sample01() {
7.      System.out.println(str);
8.    }
9.  }
10. 
11. // Main.java
12.  public class Main {
13. 
14.    public static void main(String[] args) {
15.    //オブジェクトの生成
16.     Sample01 s = new Sample01();
17.    }
18. 
19. }

◎実行結果

1. こんにちは

・ サンプルコードではMainクラスからSample01クラスのオブジェクトを生成しています。 その際、コンストラクタSample01の呼び出しを行っています。

◎まとめ

・ いかがでしたでしょうか。本記事では「継承」と「コンストラクタ」についてご紹介いたしました。 Javaにおいて「継承」と「コンストラクタ」2つとも基本的な概念で必ず理解しておかなけらばならない知識なのでJavaにご興味のあるかたはぜひ、理解を深めてください。