抽象类中的抽象方法,可以有多个实现吗

zclever 2011-08-11 03:26:41

public abstract class A
{
public abstract void fun();
}
public class B extends A
{
public void fun()
{System.out.printlen("B");}
}
public class C extends A
{
public void fun()
{System.out.printlen("C");}
}


如上面所述,如果可以,那么,我在调用func的时候,调用的是哪个的实现呢
...全文
725 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zclever 的回复:]
Java code


public class D
{
void testFun(A a)
{
a.fun();
}
}


应该输出哪个呢
[/Quote]

参数传进来的是什么实例就调用那个实例的方法
比如
A a = new B();
testFun(a); //调用B的方法
a = new C();
testFun(a); //调用C的方法
skyWalker_ONLY 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zclever 的回复:]
Java code

public class D
{
void testFun(A a)
{
a.fun();
}
}


应该输出哪个呢
[/Quote]
这个a只是个局部变量,是无法知道调用哪个的,得到运行时才能确定,这也就是多态了,不知道明白了吗
大灰兔 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 soli11722984 的回复:]
如果A a = new B()就用B那個
如果A a = new C()就用C那個
[/Quote]
+1
zousir18 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zclever 的回复:]

Java code

public class D
{
void testFun(A a)
{
a.fun();
}
}


应该输出哪个呢
[/Quote]
你调用你的testFun方法时参数要你实例化的一个对象的。你new的是哪个类就是哪个类的。
阳明 to life 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zclever 的回复:]

Java code

public class D
{
void testFun(A a)
{
a.fun();
}
}


应该输出哪个呢
[/Quote]
你传的哪个对象就是执行哪个
kate_moss 2011-08-11
  • 打赏
  • 举报
回复
先看对象是那个,new出来的是那个啦,那个去调用就是那个 ,new出B的对象那就调用他的了。。。。
singlark 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zclever 的回复:]

Java code

public class D
{
void testFun(A a) //你传的实参是B的对象就调B的,C的对象就调C的,多态
{
a.fun();
}
}


应该输出哪个呢
[/Quote]
只有引用的内容不允许回复
飓风zj 2011-08-11
  • 打赏
  • 举报
回复
你new的哪个就调用哪个啊
zclever 2011-08-11
  • 打赏
  • 举报
回复

public class D
{
void testFun(A a)
{
a.fun();
}
}

应该输出哪个呢
daijope 2011-08-11
  • 打赏
  • 举报
回复
看对象是哪一个嘛,就调用哪一个类中的实现,多态呢,,
softroad 2011-08-11
  • 打赏
  • 举报
回复
那个类的对象就调用那个类的。
soli11722984 2011-08-11
  • 打赏
  • 举报
回复
如果A a = new B()就用B那個
如果A a = new C()就用C那個

62,614

社区成员

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

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