例によるJavaプログラミングの継承

例によるJavaプログラミングの継承

クラスが別のクラスのプロパティ(データ要素)と関数(メソッド)を受け取るプロセスは、継承と呼ばれ  ます。継承の目標は、コードの再利用性を提供することです。これにより、1つのクラスで固有の特性を記述するだけでよく、残りの共通のプロパティと関数は他のクラスで拡張できます。
サブクラス:
別のクラスの機能を拡張するクラスは、サブクラス、サブクラス、または派生クラスと呼ばれます。

親クラス:
別のクラスからプロパティ(関数)が使用(継承)されるクラスは、親クラス、親クラス、または基本クラスと呼ばれます。

継承は、共通のデータ要素とメソッドを拡張することにより、既存のクラスに基づいて新しいクラスを定義するプロセスです。
継承により、コードを再利用し、Javaアプリケーションの再利用性を向上させることができます。
注:継承の最大の  利点は  、基本クラスに既に存在するコードをサブクラスで書き直す必要がないことです。

これは、親クラスのデータメンバー(インスタンス変数)とメソッドを子クラスで使用できることを意味します。

クラスとオブジェクトが何なのか理解できない場合は、オブジェクト指向プログラミングに関するガイド:OOPs Conceptsを読んでください。 

トピックに戻る:

構文:Javaの継承

クラスを継承するには、extendedキーワードを使用します。ここで、クラスXYZは下位クラスであり、クラスABCは上位クラスです。クラスXYZは、ABCクラスのプロパティとメソッドを継承します。

クラスXYZ ABC
 { 
}を拡張します

継承の例

この例では、基本クラス  Teacher とサブクラスがあり  PhysicsTeacherます。クラスPhysicsTeacher は基本クラスから指定およびカレッジのプロパティとwork()メソッドを拡張するため  、これらのプロパティとメソッドはサブクラスで宣言する必要はありません。
ここでは、collegeName、名前、および仕事()メソッド、持っているすべての教師に共通している私たちは、基本クラスでそれらを宣言しているように、この方法子供は授業が好き  MathTeacher、  MusicTeacher そして  PhysicsTeacher このコードを記述する必要はありません、とすることができそうに基本クラスから直接使用されるクラス。

class  Teacher  { 
   文字列指定=  "Teacher" ; 
   文字列collegeName =  "Beginnersbook" ; 
   void does (){ 
	System アウトprintln "Teaching" ); 
   } 
}

パブリック クラス PhysicsTeacher   Teacher { 
   String mainSubject =  "Physics"を拡張します。
   public  static  void main String args []){ 
	PhysicsTeacher obj =  new  PhysicsTeacher (); 
	システムアウトprintln OBJ collegeName ); 
	システムアウトprintln obj 指定); 
	システムでるprintln OBJ mainSubject ); 
	OBJ ありません)(; 
   } 
}

出力:

ビギナーズブック
ティーチャー
フィジックス
ティーチング

上記の例を使用すると、PhysicsTeacher IS-A と言うことができます  Teacherつまり、下位クラスは上位クラスとIS-A関係にあります。この継承は  、下位クラスと上位クラス間のIS-A関係と呼ばれ  ます

注:
派生クラスは、publicまたはprotectedとして宣言されているすべてのメンバーとメソッドを継承します。スーパークラスのメンバーまたはメソッドがプライベートとして宣言されている場合、派生クラスはそれらを直接使用できません。プライベートメンバーは、自分のクラスでのみアクセスできます。このようなプライベートメンバーは、次の例に示すように、パブリックまたは保護されたトップクラスのgetおよびsetterメソッドでのみアクセスできます。

class  Teacher  { 
   private  String 指定=  "教師" ; 
   private  String collegeName =  "Beginnersbook" ; 
   public  String getDesignation () { 
	指定を返す; } protected void setDesignation 文字列指定{ これ指定= 指定; } protected String getCollegeName (){ return
   
     
	
   
     
	collegeName ; 
   } 
   protected  void setCollegeName String collegeName  { 
	this collegeName = collegeName ; 
   } 
   void does (){ 
	System アウトprintln "Teaching" ); 
   } 
}

パブリック クラス JavaExample   Teacher { 
   String mainSubject =  "Physics" ;を
   拡張します。public  static  void main String args []){ 
	JavaExample obj =  new  JavaExample (); 
	/ *注:データメンバーにはアクセスしていません
	 *直接getterメソッドを使用しています 
	 *親クラスのプライベートメンバーにアクセスするため
	 * / 
	システムアウトprintln OBJ getCollegeName ())。
	システムアウトprintln OBJ getDesignation ())。
	システムアウトprintln OBJ mainSubject ); 
	OBJ ありません)(; 
   } 
}

出力は次のとおりです。

ビギナーズブック
ティーチャー
フィジックス
ティーチング

上記の例で重要な点は、子ということであるクラスは親クラスのprivateメンバにアクセスすることができます  を通じての保護方法  親クラスインスタンス変数(データ要素)またはメソッドをprotectedとして定義する場合  、クラス自体とサブクラスでのみアクセスできることを意味します。これらのパブリック、保護、プライベートなどはすべてアクセス指定子であり、今後のチュートリアルでそれらについて説明します。

継承の種類

 継承のタイプ詳細については、Javaの継承のタイプ参照してください 
単一継承:あるクラスが他のクラスを拡張する、子クラスと親クラス間の関係を指します。

マルチレベルの継承は:間の関係を参照し、子クラスが子クラスを拡張すると親クラス。たとえば、クラスCはクラスBおよびクラスBクラスAを拡張します。

階層の継承:複数のクラスが同じクラスを拡張する、子クラスと親クラスの間の関係を指します。たとえば、クラスB、C、およびDは同じクラスAを拡張します。

多重継承複数のクラスにまたがるクラスの概念を指します。つまり、サブクラスには2つの上位クラスがあります。例:クラスCはクラスAおよびBを拡張します。Javaは多重継承をサポートしません。詳細は  こちらをご覧ください

ハイブリッド継承:単一のプログラムでの複数のタイプの継承の組み合わせ。たとえば、クラスAとクラスBはクラスCと別のクラスDクラスAを拡張し、単純継承と階層継承の組み合わせであるため、これはハイブリッド継承の例です。

コンストラクターと継承

 私たちは、サブクラスのオブジェクトを作成するとき、サブクラスのコンストラクタが呼び出されます。デフォルトでは、標準のスーパークラスコンストラクターが呼び出されます。継承の場合、オブジェクトは上から下に構築されます。スーパークラスのコンストラクタを明示的に呼び出すことができsuperキーワード、  しかし、コンストラクタの最初のステートメントでなければなりません。キーワードsuperは、階層内の呼び出しクラスのすぐ上のスーパークラスを指します。複数のスーパーキーワードを使用して直接スーパークラス以外の祖先クラスにアクセスすることは許可されていません。

class  ParentClass { 
   //親クラスのコンストラクタ
   ParentClass (){ 
	System アウトprintln "親のコンストラクター" ); 
   } 
} 
class  JavaExample  extends  ParentClass { 
   JavaExample (){ 
	/ *デフォルトで親クラスのコンストラクタを呼び出します
	 * super()を使用して、親のコンストラクターを呼び出すことができます。
	 *子クラスの最初のステートメントである必要があります
	 *コンストラクター、パラメーター化されたコンストラクターを呼び出すこともできます
	 * superを使用した親クラスの:super(10)、now
	 *これはint argのパラメーター化されたコンストラクターを呼び出します
	 * / 
	システムアウトprintln "子のコンストラクター" ); 
   } 
   public  static  void main String args []){ 
	//子クラスのオブジェクトの作成
	new  JavaExample (); 
   }
  }

出力:

コンストラクタ
コンストラクタ

継承とメソッドのオーバーライド

親クラスにすでに存在する子クラスで同じメソッドを宣言する場合、これはメソッドオーバーライドと呼ばれ  ますこの場合、メソッドが下位クラスオブジェクトから呼び出されると、メソッドの下位クラスバージョンが呼び出されます。ただし、次の例に示すように、superキーワードを使用して親クラスメソッドを呼び出すことができます。

class  ParentClass { 
   //親クラスのコンストラクタ
   ParentClass (){ 
	System アウトprintln 「親のコンストラクター」); 
   } 
   ボイドDISP (){ 
	システムアウトprintln "親メソッド" ); 
   } 
} 
クラス JavaExample   ParentClass { 
   JavaExample (){ 
	System アウトprintln "子のコンストラクター" ); 
   } 
   void disp(){ 
	システムアウトprintln "子メソッド" ); 
        //親クラス
	super のdisp()メソッドを呼び出します。disp (); 
   } 
   public  static  void main String args []){ 
	//子クラス
	JavaExampleのオブジェクトの作成obj =  new  JavaExample (); 
	OBJ disp (); 
   } 
}

出力は次のとおりです。

コンストラクタ
コンストラクタ子供
子供 メソッド
 のメソッド

Leave a Reply

Your email address will not be published. Required fields are marked *