Java プログラミング入門チュートリアル - 継承の特徴

目次

継承する 

サブクラスを作成する

継承された定義形式

財産の継承

エラーサンプルプログラム

サブクラス変数は親クラス変数を隠します


継承する 

       継承は、オブジェクト指向プログラミングにおける 2 つのクラス間に存在する関係です。
        あるクラスが別のクラスのすべてのデータとメソッドを持っている場合、2 つのクラスの間に継承関係があると言われます。
        継承したクラスを親クラスまたはスーパークラスと呼び、親クラスまたはスーパークラスのデータやメソッドを継承したクラスをサブクラスと呼びます。

 

        継承された関係は、現実世界の物事の間に存在する接続をよく表しています。

        たとえば、船舶と旅客船の 2 つのクラスについて考えてみましょう。船舶には、トン数、時速、喫水線などの属性(データ)と、走行、接岸などの行動(方法)がありますが、客船には、船のあらゆる属性と行動に加えて、船独自の属性(定員など)やサービス(食事など)もあります。船舶を親クラス、旅客船をそのサブクラスとすると、この親子クラス群の関係を上下に展開すると、下図のような階層関係図が得られます。

 継承には次の特徴があります。

1. 継承関係は推移的です。クラスCがクラスBを継承し、クラスBがクラスAを継承する場合、クラスCもクラスAを継承すると考えることができます。つまり、クラスCはクラスAの属性とメソッドを持ち、クラスBの固有の属性とメソッドも持ちます。継承されたプロパティとメソッドは、暗黙的ではありますが、依然としてクラスCのプロパティとメソッドです。継承は、より一般的なクラスに基づいて新しいクラスを構築、確立、拡張するための最も効果的な手段です。継承により、人々の理解と説明が簡素化され、関連するクラス間の階層関係を明確に反映できます。

2. ソフトウェア再利用機能を提供します。クラスBがクラスAを継承する場合、クラスBの作成時に、基本クラス(クラスA)とは異なるいくつかの機能(データ メンバーとメンバー メソッド)のみを記述する必要があります。このアプローチにより、コードとデータの冗長性が軽減され、プログラムの再利用性が大幅に向上します。

3. 一貫性を強化します。これは、モジュール間のインターフェイスとインターフェイスを削減するために使用され、プログラムの保守性が大幅に向上します。

4. 単一継承メカニズム。セキュリティと信頼性を考慮して、Java は単一継承のみをサポートしますが、複数のインターフェイスを実装できます。

サブクラスを作成する

継承された定義形式

       Javaの継承関係は、extendsキーワードによって実現されます。

       クラスを定義するとき、extendsキーワードを使用して、新しく定義されたクラスの親クラスを指定します。新しく定義されたクラスは、指定された親クラスのサブクラスと呼ばれ、2 つのクラス間に継承関係が確立されます。

       extendsキーワード アプリケーションの形式は次のとおりです。        

         クラス subClass_name は  superClass_nameを拡張します

       継承機構の最大の特徴は、サブクラスが親クラスのプロパティやメソッドを継承できることです。

         継承関係のサンプルプログラムです。(サブクラスSubClass は、親クラスSuperClassの2 つのメンバー変数a bとメソッドfn1()を継承し、サブクラス自体はメンバー変数cとメソッドfn2()を新たに定義するため、サブクラスには現在3 つのメンバー変数と 2 つのメソッドがあります。)

  

コードは以下のように表示されます。

父親:

package test;

public class SuperClass {
	int a = 10;
	String b = "test";
	public int fn1(){
		return a;
	}
}

サブクラス: 

package test;

public class SubClass extends SuperClass {
	int c = 20;
	public int fn2(){
		return c;
	}
}

メインプログラムの出力: 

package test;

public class JavaDemo {
	public static void main(String[] args) {
		SuperClass sup = new SuperClass();
		SubClass sub = new SubClass();
		
		System.out.println("父类:"+sup.a+" "+sup.b+" "+sup.fn1());
		System.out.println("子类:"+sub.a+" "+sub.b+" "+sub.c+" "+sub.fn1()+" "+sub.fn2());
	}
}

 

 

財産の継承

       親クラスのプロパティ (すべてのメンバー変数とメソッドを含む) はサブクラスによって継承されますが、継承されたからといって必ずしもアクセスできるわけではありません。
       Java では、同じパッケージのサブクラスが継承して直接アクセスできるのは、非プライベート (パブリック、またはデフォルト) 変数とメソッドのみです。一方、親クラスのプライベート (プライベート) 属性については、サブクラスはそれらに直接アクセスする権限を持ちません。


エラーサンプルプログラム

私有財産の継承。サブクラスSubClassfn3()において、親クラスのプライベート変数 d が権限を超えてアクセスされ、コンパイルエラーになります。

 

サブクラス変数は親クラス変数を隠します

       サブクラスは、親クラスから継承した属性 (メンバー変数) を再定義することもできます。

       簡単に言えば、サブクラス変数は親クラス変数を隠します。サブクラスが自身で定義したメソッドを実行する場合、サブクラスは自身で再定義した変数を操作し、親クラスから継承した変数を非表示にします。親クラスから継承したメソッドをサブクラスが実行する際、同名のメンバ変数を使用する必要がある場合は、親クラスのメンバ変数が使用されます。

        隠し変数のサンプルプログラム。

 

おすすめ

転載: blog.csdn.net/u010764893/article/details/131124564
おすすめ