1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【わかりやすく解説‼】Javaの継承の使い方【オーバーライドの解説あり】

Last updated at Posted at 2020-04-27

1.事前知識

事前知識として、上記リンクの内容が必要です。

2.継承とは

  • 継承 とは、 既に定義されているクラス を元に、 拡張や変更 を加えたクラスを定義すること。
  • 継承の元になるクラスを「スーパークラス」という。
  • 継承により新たに定義したクラスを「サブクラス」という。
  • サブクラス の定義は、「サブクラス名 extends スーパークラス名」で行う。
  • サブクラス では、スーパークラスとの 差の分 だけ記述します。
  • Javaは言語の仕様上、1つのクラスに対して、 スーパークラス1つ しか定義できない。
  • サブクラス をさらに 継承 し、 サブクラス を作ることができる。
  • すべてのクラスは、 Java標準クラスライブラリ(Java API) に定義された java.lang.Objectクラス を継承している。
  • fainal修飾子 が付いているクラスは 継承 できない。
  • スーパークラスの private変数 に対しては、サブクラスから 直接アクセス はできない。
  • サブクラスのインスタンス化では、 スーパークラスのコンストラクタ の処理が行われた後に サブクラスのコンストラクタ の処理が行われる。
  • サブクラスのコンストラクタの最初に super() を書くことで スーパークラスのコンストラクタ を任意に呼び出すことができる。
  • オーバーライド を使用することでスーパークラスで定義されたメソッドをサブクラスで 再定義 できる。

3.オーバーライドとは

  • オーバーライド とは、スーパークラスで定義されたメソッドをサブクラスで 再定義 すること。
  • オーバーライド は、スーパークラスのメソッドと同じメソッド名・引数で、 異なる処理 したい場合に使用する。
  • オーバーライド の基本的な記述例は以下の通りである。
スーパークラス
class スーパークラス名{

    // スーパークラスメソッド
    メソッド名(){
        //処理
    }
}
サブクラス
class サブクラス名 extends スーパークラス名 {

    // オーバーライド
    @Override
    メソッド名(){
        //処理
    }
}

4.継承の基本的な書き方

テストクラス
package パッケージ名;
public class メインクラス名{
    public static void main(String[] args) {
        // インスタンスの生成
        サブクラス名 変数名 = new サブクラス名();
        // setterに値を入れる
        変数名.setインスタンス変数名(実引数);
        // getterで入れた値の取得をする
        System.out.println(変数名.getインスタンス変数名());
    }
}

スーパークラス

package パッケージ名;
class スーパークラス名{
    // インスタンス変数の定義
    private 型名 変数名;

    // コンストラクタ(インスタンス生成時に実行される)
    スーパークラス名(型名 引数){
        初期化処理など
    }
    // setter
    void setインスタンス変数名(型名 引数名){
        this.変数名 = 引数名;
    }
    // getter
    型名 getインスタンス変数名(){
        return 変数名;
    }
}
サブクラス
package パッケージ名;
class サブクラス名 extends スーパークラス名{
    // インスタンス変数の定義
    private 型名 変数名;

    // コンストラクタ(インスタンス生成時に実行される)
    サブクラス名(型名 引数){
        super(引数);
        初期化処理など
    }
    // setter
    void setインスタンス変数名(型名 引数名){
        this.変数名 = 引数名;
    }
    // getter
    型名 getインスタンス変数名(){
        return 変数名;
    }
}
  • 基本的なカプセル化は上記のように記述します。

5.事前準備

01.png

  1. Eclipseを起動し、 [ファイル(F)]→[新規(N)]→[Java プロジェクト] を選択する。
    02.png
  2. プロジェクト名に Test1 と入力し、 完了 ボタンをクリックする。
    03.png
  3. [ファイル(F)]→[新規(N)]→[クラス] を選択する。   
    05.png
  4. パッケージと名前に Test1 と入力し、 完了 ボタンをクリックする。
    06.png
  5. Test1.java が作成されたことを確認する。
    01.png
  6. 3と同様の手順でパッケージに Test1 と入力し、 名前に TestSuper と入力し、 完了 ボタンをクリックする。
    02.png
  7. TestSuper.java が作成されたことを確認する。
    03.png
  8. 3と同様の手順でパッケージに Test1 、名前に TestSub と入力し、 完了 ボタンをクリックする。
    04.png
  9. Test1.javaTestSuper.javaTestSub.java が作成されれば成功。

6.記述例

Test1.java
package Test1;
public class Test1 {
	public static void main(String[] args) {
        // インスタンスの生成
		TestSuper ts1 = new TestSuper("A");
		TestSub ts2 = new TestSub("B","ぎょうざ");

		// インスタンスの表示
		ts1.showName();
		System.out.println();
		ts2.showName();
    }
}
TestSuper.java
package Test1;
public class TestSuper {
	// インスタンス変数の定義
    private String name;

    // コンストラクタ(インスタンス生成時に実行される)
    public TestSuper(String name) {
		this.name = name;
	}
    // setter
	public void setName(String name) {
		this.name = name;
	}
	// getter
	public String getName() {
		return name;
	}
	public void showName() {
		System.out.println("名前:"+name);
	}
}
TestSub.java
package Test1;
public class TestSub extends TestSuper {
	// インスタンス変数の定義
    private String food;

 // コンストラクタ(インスタンス生成時に実行される)
	public TestSub(String name,String food) {
		super(name);
		this.food = food;
	}
	// setter
	public void setFood(String food) {
		this.food = food;
	}
    // getter
	public String getFood() {
		return food;
	}
	@Override
	public void showName() {
		super.showName();
		showFood();
	}
	public void showFood() {
		System.out.println("好きな食べ物:"+food);
	}
}
  • 上記の文をコピーして、文字コードは S-JIS を指定し、ファイル名を Test1.java , TestSuper.java , TestSuper.java で保存し、実行するとこうなります。↓↓                          
    01.png

7.GitHub

GitHubにソースコードを公開しています。

8.関連

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?