有两个接口
interface A {
void m();
}
interface B {
int m();
}有类实现两个接口
class T implements A, B {
// ? 怎么样写上面的两个 m()方法? (注意返回值不一样)
}
interface A {
void m();
}
interface B {
int m();
}有类实现两个接口
class T implements A, B {
// ? 怎么样写上面的两个 m()方法? (注意返回值不一样)
}
解决方案 »
- FileDialong使用
- 欧美外包企业一般用什么开发工具?
- 谁有中文版jdk文档的下载地址,谢谢。
- 连接mysql的时候报错Access denied for user: '[email protected]' (Using password: YES)
- 请问如何实现目录选择对话框?
- 很难噢!!用java实现统计净代码行数,给点思路!!!
- 关于中文处理,帮帮忙
- 安装好了jb8,但是crack里面的文件大不开,不能注册,怎么办?
- 一个简单问题
- 一个设想大家帮忙提一下意见,看看可不可能实现
- (求助)计算微积分的计算器源码,谢谢!
- 如何禁用Jtabbedpane上的其它面板,只设置其中的一个有效?
class T implements A, B {
void m();
int m(); }
void m(){};
int m(){}; }
The return type is incompatible
void m(){};
int m(){return;}; }
这样应该可以了
void m(){};
int m(){return;}; }
这样应该可以了================================================
一样会报错。不能只是以返回值来区分两个函数。
重载需要函数同名,参数不同(a,数据类型不同,b个数不同,c顺序不同)返回值类型不同
关键的是前两个条件
单单靠返回值类型是无法重载函数的
不过java传参的时候,会根据实际情况进行一些类型转换
void m();
}
interface B {
int m();
} class T implements A, B {
void A.m() {}
int B.m(){}
}调用
T t = new T();
A a = t;
B b = t;
a.m();
b.m();你去看看对么
C#里面这么写 叫显式接口
C:\test.java:13: 需要 '('
public void A.m()
^
C:\test.java:13: 方法声明无效;需要返回类型
public void A.m()
^
C:\test.java:17: 需要 ';'
public int B.m()
^
C:\test.java:17: 方法声明无效;需要返回类型
public int B.m()
^
4 错误Process completed.
重新设计接口,呵呵
interface A {
void a();
}interface B {
int a();
}class ProxyB implements B{
A a;
public int a() {
return 0;
}
void aInA() {
a.a();
}
}
public final A AImpl = new A() {
public void m() {}
} public final B BImpl = new B() {
public int m() {}
}
}使用的时候,可以创建一个ABImpl的实例ab,然后调用ab.AImple.m()和ab.BImple.m()。
也可以根据逻辑或者开发上的需要,写成如下形式:class ABImpl implements A {
public void m() {} public final B BImpl = new B() {
public int m() {}
}
}这样,可以用ab.m()和ab.BImpl.m()。