重载的小问题

captainAmerica5 2017-09-15 10:53:00
无聊之余,发现重载,
当传入子类时候,两个方法都能接受,应该有个优先级,但是没有看过此类的文章。
求大神告知
public class Test{
public static void main(String[] args){
B b=new A();
f(b);
}
// 这边的参数可以是父类,可以接受子类和父类
public static void f(B b){
System.out.println(父类);
}
// 这边的参数是子类
public static void f( A a){
System.out.println(子类);
}


}
class A extends B{
}
class B {
}
...全文
282 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huatian5 2017-09-26
  • 打赏
  • 举报
回复
引用 1 楼 miaoch 的回复:
当然是从细到粗,从子到父咯 针对你这个例子,如果传入的是子类对象(声明也是子类的),那肯定是调接收子类方法 如果你没有接收子类的方法,那就调接收父类的方法,如果也没有接收父类的方法,那编译也通不过。 你这个例子,虽然对象是A,但是已经将其向上转型为B了,所以就调用接收父类的方法。不过如果你在这个方法内执行这个对象的方法,那就涉及到多态了,和你这个例子也没什么关系。
一说“向上转型”这个名字就想起来了
qq_36344527 2017-09-21
  • 打赏
  • 举报
回复
解决了问题.麻烦结账分数
qq_36344527 2017-09-21
  • 打赏
  • 举报
回复
这个也不叫重载吧....这是多态的表现...编译时期是父类.运行时期是子类.如果子类中间没有就会访问父类...父类没有.子类有不可以运行....如果static修饰调用父类
JavaBuilt 2017-09-19
  • 打赏
  • 举报
回复
这是多态,父类类型作为方法的参数,传递的可以是父类或者子类的对象。 而你所说的方法重载,是静态方法的重载,静态方法不依赖于对象而依赖于类,没有对象的先后创建顺序,自然就没有方法调用的先后顺序。静态方法,在类加载的时候就加载好了,因此没有优先级之分。
miaoch 2017-09-18
  • 打赏
  • 举报
回复
当然是从细到粗,从子到父咯 针对你这个例子,如果传入的是子类对象(声明也是子类的),那肯定是调接收子类方法 如果你没有接收子类的方法,那就调接收父类的方法,如果也没有接收父类的方法,那编译也通不过。 你这个例子,虽然对象是A,但是已经将其向上转型为B了,所以就调用接收父类的方法。不过如果你在这个方法内执行这个对象的方法,那就涉及到多态了,和你这个例子也没什么关系。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧