AJPFX关于多态的应用
要求设计一个方法,要求此方法可以接受A类的任意子类对象,并调用方法,此时,如果不使用对象多态性,那代码肯定会类似如下
站在用户的角度思考问题,与客户深入沟通,找到屯留网站设计与屯留网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站制作、外贸网站建设、企业官网、英文网站、手机端网站、网站推广、域名与空间、网络空间、企业邮箱。业务覆盖屯留地区。
- 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()方法
- }
- }
以代码虽然实现要求,但可以发现:如果按照如上方式完成程序,这就相当于产生了一个A类的子类时,Run()方法就要重载一次,则每一次扩充子类都要修改类本身,这样肯定不太好,那么如果使用对象多态性完成呢?具体代码如下
- 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()方法
- }
- }
上代码中在Run()方法中使用了对象的多态性,所以可以接收任何子类的对象,这样无论子类如何增加,Run()方法都不用做任何的改变,因为发生了对象的向上转型关系后,调用的方法一定是被子类覆写过的方法。
本文题目:AJPFX关于多态的应用
转载来于:http://cdiso.cn/article/jchcdp.html