java中多个子类实现了父类的同一个抽象方法,那么我调用该抽象方法时如何确定走哪一个子类的同名方法呢

上一篇说了java中多个子类实现同一个接口,怎么区分调的是哪一个实现类

java中多个子类实现了父类的同一个抽象方法,那么我调用该抽象方法时如何确定走哪一个子类的同名方法呢?

答:

抽象类无法实例化,实例化的只能是子类。如Father是一个抽象父类,有一个talk抽象方法,和一个speak的普通方法。Son,Son2是他的子类,有一个talk方法的具体实现。

那么可以Father f =new Son();这里不能new Father,抽象类无法实例化,而f.talk();调用的是Son的talk具体实现,f的本质还是Son,当作Father在处理而已。而f.speak(),调用的也是Son的speak();因为这是Son继承过来的,没有重写的话,会跟Father的speak()方法一模一样。

如果是Father f=new Son2();那么f调用的方法就全是Son2这个类的。

假如做了某种封装,某个方法返回了一个Father,那么你只能根据那个方法具体的代码来看到底那个实例是哪一个So

还有两种方式:

1 注解@Serice("别名")

2 注解@Qualifier

希望对你有帮助!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值