如果JAVA中一个类继承的两个接口中有相同方法,怎么办
例如一个类电脑实现了接口1显示器和接口2主机Interface1screen{voidgetSize();}Interface2host{voidgetSize();}c...
例如一个类电脑实现了接口1显示器和接口2主机
Interface1 screen{
void getSize();
}
Interface2 host{
void getSize();
}
class computer implments screes,host{
void getSize(){};//我要在这个方法里返回显示器和主机的size,请问怎么办到???
} 展开
Interface1 screen{
void getSize();
}
Interface2 host{
void getSize();
}
class computer implments screes,host{
void getSize(){};//我要在这个方法里返回显示器和主机的size,请问怎么办到???
} 展开
6个回答
展开全部
一,一般来说,JAVA不支持一个类继承的两个接口中存在相同的方法,这样容易引起接口继承混乱;
二,如果当事人一定要让一个类继承的两个接口存在相同的方法,可以通过内部类来实现,一般来说JAVA是不允许接口重名的;
三,内部类可以这样写:
interface I1
{
void get();
}
interface I2
{
void get();
}
public class MultiInter implements I1{
public void get(){
System.out.println("I am from I1");
}
private class I2Impl implements I2{
public void get(){
System.out.println("I am from I2");
}
}
public void get2(){
I2 i2=new I2Impl();
i2.get();
}
public static void main(String rsg[]){
MultiInter mi=new MultiInter();
mi.get();
mi.get2();
}
}
二,如果当事人一定要让一个类继承的两个接口存在相同的方法,可以通过内部类来实现,一般来说JAVA是不允许接口重名的;
三,内部类可以这样写:
interface I1
{
void get();
}
interface I2
{
void get();
}
public class MultiInter implements I1{
public void get(){
System.out.println("I am from I1");
}
private class I2Impl implements I2{
public void get(){
System.out.println("I am from I2");
}
}
public void get2(){
I2 i2=new I2Impl();
i2.get();
}
public static void main(String rsg[]){
MultiInter mi=new MultiInter();
mi.get();
mi.get2();
}
}
展开全部
如果是电脑类的话,应该是拥有一个显示器和一个主机,如:
class Computer{
private Screen screen;
private Host host;
};
很容易通过而通过成员变量的getSize获得尺寸,而不是让电脑实现不同接口。对一个对象来说,
实现的不同的接口的相同名字的方法代表的就应该是一个意思,比如getSize就应该是获得整个
电脑的尺寸,这不应该出现歧义。一个同名方法可以满足多个接口。
class Computer{
private Screen screen;
private Host host;
};
很容易通过而通过成员变量的getSize获得尺寸,而不是让电脑实现不同接口。对一个对象来说,
实现的不同的接口的相同名字的方法代表的就应该是一个意思,比如getSize就应该是获得整个
电脑的尺寸,这不应该出现歧义。一个同名方法可以满足多个接口。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-18
展开全部
没法办到……因为接口没有具体逻辑,你怎么实现的就会怎么返回。不论调用的时候是screen类型还是host类型,最后具体的实现都是computer的getSize方法。建议分开实现,因为computer和screen、host不是一个继承关系,而是一个组成关系
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两个接口的实现都是这个类中的方法,无论是创建哪个接口的实例,调用这个方法总是类实现的方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显示器跟主机应该作为电脑的属性来定义类。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询