ダークホースプログラマー--オブジェクト向けにsuperとfinalキーワードを継承

4055 ワード

------ Javaトレーニング、Androidトレーニング、iOSトレーニング、.Netトレーニング、あなたと交流することを期待します!------一、継承:1.キーワードの使用:extends;2.継承の利点:1).コードの多重性を向上させる;2).コードのメンテナンス性を向上させる;   弊害:子類と親類に依存性が生じた.3.継承の特徴:  1).Javaでは継承のみ:   class A{}    class B{}    class C extends A,B{}//エラーです.  2).ただしJavaはマルチレベル継承をサポートする:   class A{     fun1(){}    }    class B extends A{     fun2(){}    }    class C extends B{}//Cはfun 1とfun 24を継承する注意事項を持つ:  1).親クラスのprivate(プライベート)メンバーを継承できません.  2).親の構造方法を継承できない.  3).一部の機能のために継承しないでください;  4).継承はいつ使用されますか?「is a」の関係があります.5.継承中のメンバー変数とメンバーメソッドの関係:  1).サブクラスは、親と同じ「メンバー変数」を定義できます.この場合、サブクラスのメンバー変数は親のメンバー変数を上書きします.superで表示される親にアクセスするメンバー変数を使用します.  2).子クラスは親クラスと同じ「メンバーメソッド」を定義できます.戻り値のタイプ、メソッド名、パラメータリストは完全に同じです.この形式は「書き換え」と呼ばれます.   1.戻り値のタイプ、メソッド名が同じで、パラメータのリストが異なる:再ロードと同様にコンパイルできます.   2.戻り値のタイプは異なりますが、メソッド名とパラメータのリストは同じです.コンパイルエラーです.戻り値のタイプは同じでなければなりません.6.thisとsuperの違い:1).this:   1.どのクラスでも使用できます.   2.現在のオブジェクトの参照を格納します.JVMによって自動的に割り当てられます.このようなオブジェクトをインスタンス化する場合.   3.このオブジェクトのメンバー変数、メンバーメソッド、構築メソッドにアクセスできます.   4.this()は、このクラスの他の構築方法を呼び出すことができますが、必ずこの構築方法の最初の行の有効コードに書きます.2).super:   1.一般的にサブクラスで使用される.   2.親オブジェクトの参照が格納されます.JVMが自動的に割り当てられます.子オブジェクトをインスタンス化する場合.   3.親オブジェクトのメンバー変数、メンバーメソッド、構築メソッドにアクセスできます.   4.super()は親の構造方法を呼び出すことができ、この構造方法の最初の文でもある.     注意:this()と同時に存在することはできません.親にデフォルトのパラメータのない構造方法がない場合、子クラスの構造方法はすべて表示されます.super()は親クラスのパラメータ付き構造方法を呼び出します.二、finalキーワード:1.クラス:最終クラスを表し、継承できません.2.メンバー変数:最終値を持つ--定数です.値は1回のみ割り当てられ、その後は変更できません.      ≪基本データ型|Basic Data Type|oraolap≫:「≪値|Value|oraolap≫」が変更できないことを示します.      参照データ型:「参照(アドレス)」は変更できません.3.メンバーメソッド:最終メソッドを表し、書き換えられません.
継承とfinal例
class Person
{	//    
	private String name;
	private int age;
	private char sex;
	//    
	Person(){
	}
	Person(String name,int age,char sex){
		this.name = name;
		this.age = age;
		this.sex = sex;
	}
	//  get set  
	void setName(String name){
		this.name = name;
	}
	String getName(){
		return this.name;
	}
	void setAge(int age){
		this.age = age;
	}
	int getAge(){
		return this.age;
	}
	void setSex(char sex){
		this.sex = sex;
	}
	char getSex(){
		return this.sex;
	}
	//      
	void eat(){
		System.out.println("   ");
	}
	void sleep(){
		System.out.println("   ");
	}
}
class Student extends Person
{
	//       
	private String stuNo;
	//    
	Student(){
	}
	Student(String name,int age,char sex,String stuNo){
		
		super(name,age,sex);//           
		this.stuNo = stuNo;
	}
	//   get set  
	void setStuNo(String stuNo){
		this.stuNo = stuNo;
	}
	String getStuNo(){
		return this.stuNo;
	}
	
	//         ;
	void study(){
		System.out.println("   Java");
	}
}
class Teacher extends Person
{
	//    
	private String teaNo;

	//    
	Teacher(){
	}
	Teacher(String name,int age,char sex,String teaNo){
		super(name,age,sex);
		this.teaNo = teaNo;	//        
	}
	//  get set  
	void setTeaNo(String teaNo){
		this.teaNo = teaNo;
	}
	String getTeaNo(){
		return this.teaNo;
	}
	//      
	void teach(){
		System.out.println("   Java");
	}
}
class Demo 
{
	public static void main(String[] args) 
	{
		Teacher t1 = new Teacher();
		t1.setName("   ");		//   
		t1.setAge(20);				//   
		t1.setSex(' ');			//   
		t1.setTeaNo("it_tea_001");	//   

		t1.eat();	//   
		t1.sleep();	//   
		t1.teach();	//   


	}
}

 
final:
class Book
{
	String name;
	String publish;
}
class Demo 
{
	public static void main(String[] args) 
	{
	//	change(10);

		Book book = new Book();

		book.name = "JavaSE  ";
		book.publish = "itcast";

		change(book);
	}

	public static void change(final int num){//num       
		System.out.println("num = " + num);//10
	//	num = 20;
	//	System.out.println("num = " + num);
	}
	public static void change(final Book book){	//book        ;
		System.out.println(book.name);
		book.name = "JavaEE  ";

	//	book = new Book();//    。
		System.out.println(book.name);
	}
}