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()方法都不用做任何的改变,因为发生了对象的向上转型关系后,调用的方法一定是被子类覆写过的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值