接口作为参数

nulang 2009-02-10 10:30:48
当一个方法的参数是一个接口类型时,如果一个类实现了该接口,那么就可以把该类的实例的引用传值给该参数,参数可以回调类实现的接口方法?
例子如下:
interface Show{
void show();
}
class A implements Show{
public void show(){
System.out.println("我喜欢NBA");
}
}
class B{
public void f(Show s){
s.show();
}
}
public class C{
public static void main(String[]args){
B b=new B();
b.f(new A());
}
}
我想知道的是为什么能把类A的实例的引用传值给类B做它方法f的参数呢?
...全文
211 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZiSheng 2009-02-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 nulang 的帖子:]
当一个方法的参数是一个接口类型时,如果一个类实现了该接口,那么就可以把该类的实例的引用传值给该参数,参数可以回调类实现的接口方法?
这个不能叫做回调
例子如下:
interface Show{
void show();
}
class A implements Show{
public void show(){
System.out.println("我喜欢NBA");
}
}
class B{
只要实现了show的接口的类的对象都可以传递过来,这个是目的
public void f(Show s){
s.show();
}
}
public class C{
public static void …
[/Quote]
huadis 2009-02-11
  • 打赏
  • 举报
回复
这个是允许的,属于上转型,只不过接口类不能使用实现类的新成员。
robertcdong 2009-02-11
  • 打赏
  • 举报
回复
只要实现了接口的类的对象都可以作为参数向上转型,而且是安全的,接口是被用来建立类与类之间的协议。
jiaping108 2009-02-11
  • 打赏
  • 举报
回复
b.f(new A()); 并没什么问题

对象既可以做为它自己本身的类型使用,也可以作为它的基类型使用~
说白了,这种做法就是"向上转型",在java中,向上转型是安全的,想要再底层的东西的话可以去google下向上转型的相关信息
狂浪吻血 2009-02-11
  • 打赏
  • 举报
回复
只要实现了show的接口的类的对象都可以传递过来
kao331431214 2009-02-10
  • 打赏
  • 举报
回复
b.f(new A());
你是不是写错了
贴下一正确的代码~
AL3635 2009-02-10
  • 打赏
  • 举报
回复
我想应该是这样吧:
类B的f方法里需要传一个接口Show的实例(就跟类Show的实例差不多)作为参数;
类A实现了接口Show(就跟继承了类Show差不多);
所以就可以把类A的实例的引用传值给类B做它方法f的参数(父类引用指向子类对象);

62,616

社区成员

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

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