当前位置: 技术问答>java相关
讨论一下 interface 的问题
来源: 互联网 发布时间:2015-07-14
本文导语: 一个类同时 implements 了两个 interface 可这两个 interface 里都有一个相同的函数(包括名称,参数) 在另一个类里生成这两个 interface 的实例 怎样分别定义和调用各 interface 里的函数? 例如: //----------------------...
一个类同时 implements 了两个 interface
可这两个 interface 里都有一个相同的函数(包括名称,参数)
在另一个类里生成这两个 interface 的实例
怎样分别定义和调用各 interface 里的函数?
例如:
//-------------------------------
public interface in1 {
public void type();
}
public interface in2 {
public void type();
}
// 两个 interface
//-------------------------------
public class test implements in1,in2{ //同时 implements 了两个 interface
public test() {
}
public void type(){ // 怎样分别定义?
System.out.println("type");
}
}
//------------------------------
public class test2 {
public test2 () {
}
public static void main(String[] args) {
Frame1 frame1 = new Frame1();
frame1.show();
in1 tes1 = new test();
tes1.type(); // println("type")
in2 tes2 = new test();
tes2.type(); // println("type")
}
}
可这两个 interface 里都有一个相同的函数(包括名称,参数)
在另一个类里生成这两个 interface 的实例
怎样分别定义和调用各 interface 里的函数?
例如:
//-------------------------------
public interface in1 {
public void type();
}
public interface in2 {
public void type();
}
// 两个 interface
//-------------------------------
public class test implements in1,in2{ //同时 implements 了两个 interface
public test() {
}
public void type(){ // 怎样分别定义?
System.out.println("type");
}
}
//------------------------------
public class test2 {
public test2 () {
}
public static void main(String[] args) {
Frame1 frame1 = new Frame1();
frame1.show();
in1 tes1 = new test();
tes1.type(); // println("type")
in2 tes2 = new test();
tes2.type(); // println("type")
}
}
|
同名方法是不是实现类似的功能呢?如果是的话,就让它同名又有何妨?
如果不是的话,接口有同名方法就说明你抽像得不是太好,应该重新设计各个接口^_^
如果不是的话,接口有同名方法就说明你抽像得不是太好,应该重新设计各个接口^_^
|
这是软件设计的规则,不要钻牛角尖了
|
多个interface不是C++中的多继承概念
两个interface有相同的函数名有什么关系呢,
java implements interface时只是规定了一个函数名而已,
管他是那个接口的或是自己的
当然,严格来讲这是不好的设计。
两个interface有相同的函数名有什么关系呢,
java implements interface时只是规定了一个函数名而已,
管他是那个接口的或是自己的
当然,严格来讲这是不好的设计。
|
如果发生这种情况,恐怕要重新检查一下设计了,是否有必要一定要同时实现这两个接口,为什么两个接口有同名方法
|
这个问题很有趣!如果真是遇到这样的两个interface!那么只有想点另外的办法了.可以用一个抽象类来改写就ok了!