JAvaクラスの継承

2805 ワード

クラスの継承(キーワード:extends)は、名前の通り、子クラスが親クラスのすべての属性と方法を継承します.属性とメソッドには、デフォルトの保護された(protected)、パブリック(public)およびプライベート(private)に分けられますが、サブクラスが呼び出せるメソッドは、親のすべてのメソッドとプロパティではありません.子クラスが親クラスと同じパッケージ内にある場合、デフォルトの、共有の、保護された布団クラスの極限オブジェクトが呼び出されます.一方、子クラスと親クラスが同じパッケージにない場合、作成されたオブジェクトが子クラスまたは親クラスに共通の呼び出し可能なものだけでなく、子クラスの{}に呼び出し可能な属性と方法は共通のものと保護されているものしかありません.
    クラスの継承の中で、少し重要なのは方法の書き換えです.メソッドの書き換えは、親クラスのメソッドを再構築することですが、このメソッドのクラス名、戻り値データ型、パラメータは親クラスと同じでなければなりません.メソッド書き換え実装後も呼び出しは簡単で,まずサブクラスにこのメソッドがあるかどうかをチェックし,ない場合は親をチェックする.
    次は自動転換です.もちろん、クラスの継承関係の下でしか使えません.一般的には、1つのクラスのメソッドに親クラスのパラメータを導入し、このクラスのメソッドを呼び出すと、子クラスを実パラメータとして実パラメータに渡します.これにより,自動変換が実現される.その利点は必然的にコード量を減らすことである.
     次に、一例を挙げます.一人で電子ゲームをしますが、ゲームにはいろいろな種類がありますが、いろいろなゲームには操作方法があります.この例では、1人は1つのpeopleクラスによって創造され、peopleクラスには1つのゲームをする方法が含まれており、ゲームも1つのクラス(親)であり、その子クラスには体感ゲーム、ストリートゲームなどがある.ゲームクラス(親)では、キーボードで操作する方法があり、そのサブクラス体感ゲーム(センサーで操作)、アーケードゲーム(ハンドルで操作)は方法書き換えで異なる操作方法を実現する.このような簡単なプログラムには、クラスの継承、クラスの書き換え、自動変換が含まれています.コードは次のとおりです.
 
package    ;

public class people_play_games {
	public static void main(String[] args){
		people dou=new people();
		dou.setName("  ");
		Tggame wii=new Tggame("wii    ");
		wii.setName("wii    ");
		dou.play_games(wii);
		Jjgame xbw=new Jjgame("     ");
		dou.play_games(xbw);
	}

}


public class people {
	 //              
	private String name;
	public void setName(String name){
		this.name=name;
	}

	public String getName(){
		return name;
	}
	
	  //      
	public void play_games(games game){
		System.out.println(this.name+"   "+game.getName());
		game.caozuo();
	}
}


public class games {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	//    
	public games(String n){
		name=n;
	}
	
	public games(){}
	
	//         
	public void caozuo(){
		System.out.println("      ,       !");
	}
	
}

//    (  )
public class Tggame extends games {

	
	public Tggame(String name){
		super(name);
	}
	
//	public Tggame(){}
	//              
	public void caozuo(){
		System.out.println("      ,        !");
	}

}

//    (  )
public class Jjgame extends games{
	public Jjgame(String name){
		super(name);
	}
	//              
	public void caozuo(){
		System.out.println("      ,       !");
	}
}