JAVA_SE基礎——49.多態的應用

由於多態對之後開發的重要性,所以我在這裏專門開個多態的應用來加深講解,但願想弄懂多態的同窗能耐心看完。html

瞭解了對象多態性後,那麼這多態到底有哪些用處了? 下面要求設計一個方法,要求此方法能夠接受A類的任意子類對象,並調用方法,此時,若是不使用對象多態性,那代碼確定會相似code1。java


code1(不使用對象多態性實現功能)spa

class A{					// 定義類A
	public void Run1(){		// 定義Run1()方法
		System.out.println("A類----Run1方法") ;
	}
	public void Run2(){
		Run1() ;		// 調用父類的Run1()方法
	}
}
class B extends A{
	public void Run1(){		// 覆寫父類中的Run1方法
		System.out.println("B類----Run1方法") ;
	}
	public void Run3(){		// B類特有的方法
		System.out.println("B類----Run3方法") ;
	}
}
class C extends A{
	public void Run1(){		// 覆寫父類中的Run1方法
		System.out.println("C類----Run1方法") ;
	}
	public void Run5(){		// C類特有的方法
		System.out.println("C類----Run5方法") ;
	}
}
public class Demo6{
	public static void main(String asrgs[]){
		Run(new B()) ;	// 傳遞B類的實例    B b = new B();  
		Run(new C()) ;	// 傳遞C類的實例	  C c = new C();
	}
	public static void Run(B b){
		b.Run1() ;		// 調用覆寫父類中的Run1()方法
	}
	public static void Run(C c){
		c.Run1() ;		// 調用覆寫父類中的Run1()方法
	}
}
運行結果:




以上code1代碼雖然實現了基本的要求,可是大家應該能夠發現:若是按照code1的方式完成程序,這就至關於產生了一個A類的子類時,Run()方法就要重載一次,則每一次擴充子類都要修改類自己,這樣確定不太好,那麼若是使用對象多態性完成呢?具體代碼如code2。設計


code2(使用對象多態性實現功能code

class A{					// 定義類A
	public void Run1(){		// 定義Run1()方法
		System.out.println("A類----Run1方法") ;
	}
	public void Run2(){
		Run1() ;		// 調用父類的Run1()方法
	}
}
class B extends A{
	public void Run1(){		// 覆寫父類中的Run1方法
		System.out.println("B類----Run1方法") ;
	}
	public void Run3(){		// B類特有的方法
		System.out.println("B類----Run3方法") ;
	}
}
class C extends A{
	public void Run1(){		// 覆寫父類中的Run1方法
		System.out.println("C類----Run1方法") ;
	}
	public void Run5(){		// C類特有的方法
		System.out.println("C類----Run5方法") ;
	}
}
public class Demo6{
	public static void main(String asrgs[]){
		Run(new B()) ;	// 傳遞B類的實例,產生向上轉移
		Run(new C()) ;	// 傳遞C類的實例,產生向上轉移	 
	}
	//接收父類對象
	public static void Run(A a){//至關於 A a = new B() & A a = new C()
		a.Run1() ;		// 調用覆寫父類中的Run1()方法
	}
	
}
運行結果:



上面code2代碼中在Run()方法中使用了對象的多態性,因此能夠接收任何子類的對象,這樣不管子類如何增長,Run()方法都不用作任何的改變,由於發生了對象的向上轉型關係後,調用的方法必定是被子類覆寫過的方法。htm

相關文章
相關標籤/搜索