黑马程序员技术交流社区
标题:
请高手指教
[打印本页]
作者:
邵彩华
时间:
2013-3-30 23:55
标题:
请高手指教
本帖最后由 邵彩华 于 2013-4-1 19:01 编辑
当一个类同时实现两个接口A和B,即形如class C implements A,B { },如果接口A和B之中有相同的方法,参数也相同,但返回值类型不同,问在class C中该如何实现?
作者:
郭兴业
时间:
2013-3-31 00:06
新手,学习了,正好看到这了,也有此困惑,求解
作者:
郭沐昌
时间:
2013-3-31 00:14
“interface”(接口)关键字使抽象的概念更深入了一层。我们可将其想象为一个“纯”抽象类。它允许创
建者规定一个类的基本形式:方法名、自变量列表以及返回类型,但不规定方法主体。接口也包含了基本数
据类型的数据成员,但它们都默认为static 和final。接口只提供一种形式,并不提供实施的细节。
接口这样描述自己:“对于实现我的所有类,看起来都应该象我现在这个样子”。因此,采用了一个特定接
口的所有代码都知道对于那个接口可能会调用什么方法。这便是接口的全部含义。所以我们常把接口用于建
立类和类之间的一个“协议”。有些面向对象的程序设计语言采用了一个名为“protocol”(协议)的关键
字,它做的便是与接口相同的事情。
为创建一个接口,请使用interface 关键字,而不要用 class。与类相似,我们可在 interface关键字的前
面增加一个 public关键字(但只有接口定义于同名的一个文件内);或者将其省略,营造一种“友好的”状
态。
为了生成与一个特定的接口(或一组接口)相符的类,要使用 implements(实现)关键字。我们要表达的意
思是“接口看起来就象那个样子,这儿是它具体的工作细节”。除这些之外,我们其他的工作都与继承极为
相似。
作者:
tshch1989
时间:
2013-3-31 00:22
按照java的基础语法分析的话,应该是没有提供能实现的关键字什么的;
作者:
山西_李帅
时间:
2013-3-31 00:27
interface A
{
public void aaa();
}
interface B
{
public void bbb();
}
class C implements A,B
{
public void aaa(){
System.out.println("aaa");
}
public void bbb(){
System.out.println("bbb");
}
}
一样的。
作者:
山西_李帅
时间:
2013-3-31 00:29
interface A
{
public void aaa();
}
interface B
{
public String bbb();
}
class C implements A,B
{
public void aaa(){
System.out.println("aaa");
}
public String bbb(){
//System.out.println("bbb");
return("bbb");
}
}
作者:
xyh19
时间:
2013-3-31 10:10
在不同接口中使用相同的方法名通常会造成代码可读性的混乱,应该尽量避免这种情况。这也是编程人员需要注意的东西。
别想着怎么弄好方法这样实现,即便实现了电脑可以区别了,给别人带来将是不便,
咱们学习各种技术的目的是为了更简洁、更方便的用于实际,而不是给其他程序员带来麻烦,这样就违背了技术的本质了。
作者:
赵喜平
时间:
2013-3-31 10:11
interface A
{
String add();
}
interface B
{
int add();
}
class C implements A,B
{
public String add() {}
public int add(){}
}
你的意思是这样吧,这样是行不通的,同时继承的两个接口中的方法是不可以方法名相同而返回值不同,这是错误的
作者:
米腾达
时间:
2013-3-31 10:27
本帖最后由 米腾达 于 2013-3-31 10:32 编辑
同一个类中,若是方法名相同,只有重载这种情况,但是方法重载要求方法的参数列表不同。像你说的这种情况下,如果像下面这样写一定不能通过编译通过
interface InterA
{
public int show();
}
interface InterB
{
public String show();
}
class C implements InterA,InterB
{
public int show(){
return 1;
}
public String show(){
return "InterB";
}
}
复制代码
若是一定要实现两个接口中的同名方法的话,可以用下面的方法
interface InterA
{
int show();
}
interface InterB
{
String show();
}
class C implements InterA
{
private InterB bb = new InterB(){
public String show(){
return "InterB";
}
};
public int show(){
return 1;
}
public InterB getInterB(){
return bb;
}
public static void main(String[] args){
C cc = new C();
System.out.println(cc.show());
System.out.println(cc.getInterB().show());
}
}
复制代码
作者:
王俊杰
时间:
2013-3-31 12:49
这个问题我发过一次帖
请参考。希望给你一定的启发。
肖明凯 提出的用内部类的方案是比较不错的。
http://bbs.itheima.com/forum.php ... mp;page=1#pid241818
祝共同进步!!
作者:
陈丽莉
时间:
2013-3-31 18:16
若还有问题,继续追问;没有的话,请将帖子分类改成【已解决】~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2