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

相关文章
相关标签/搜索