这样的接口使用会不会有问题

wuyue-tiger 2003-08-20 05:18:27
public interface A {
}

public interface B {
public A getInfo();
}

public class AA implements A {
}

public class BB implements B {
public A getInfo() {
return new AA();
}
}

每次我使用 BB 的 getInfo 方法返回 A 后还要上溯构造成 AA 才能真正被使用,
如果我实现 A 的方法变换了,换成了 AAA 来实现 A 接口, 我就要上溯构造成 AAA 了,我的程序可能就有很多地方要做修改,是不是有违接口多态的初衷啊?
...全文
20 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyue-tiger 2003-08-21
  • 打赏
  • 举报
回复
问题是我 AA 和 AAA 不仅实现了 A 接口中的方法,另外自已还有自已所特有的方法,这叫我怎么办呢?我只有从 A 上溯构造出 AA 或 AAA 才能达到我所想要的目的
whyxx 2003-08-20
  • 打赏
  • 举报
回复
这是一个很简单的接口的应用啊,通常在项目里面,共通函数里返回值的类型一般是不定的,这时可以定义一个通用接口,其他需要通过这个函数返回的值都必须实现这个接口,这样的东西才具有好的扩展性
seaman0916 2003-08-20
  • 打赏
  • 举报
回复
楼主这个 接口的测试程序写的很好,值得学习!

public class BB implements B {
public A getInfo() {
return new AA();
}
}

按照原来的实现方法,new AA();生成一个AA对象,他会自动向上转型为 A ,所以getInfo()返回一个A 的对象;

"换成了 AAA 来实现 A 接口" 后,生成一个AAA对象,他还会自动向上转型为 A ,所以getInfo()还是返回一个A 的对象;

因为 class AA 和class AAA都实现了 接口 A !
"白马也是马" !
huancaimihai 2003-08-20
  • 打赏
  • 举报
回复
是不是向下转型的问题啊?
hayai 2003-08-20
  • 打赏
  • 举报
回复
每次我使用 BB 的 getInfo 方法返回 A 后还要上溯构造成 AA 才能真正被使用
为什么呢?

62,614

社区成员

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

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