我们先定义一个接口A,再定义一个接口B,他们有相同的名称的方法,该方法类型也相同,当在MYCLASS类中继续了A,B这两个接口,重写ff方法时,重写的到底是A的ff方法还是B的ff方法?? (此种编译正常.运行没问题)
interface A{
public void ff();
}
interface B{
public void ff();
}
class MYCLASS implements A,B{
public void ff(){
System.out.println("OVERWRITE ee");
}
}
public class ee{
public static void main(String[] args){
MYCLASS Myclass=new MYCLASS();
Myclass.ff();
}
}下面我们将程序稍改动一下,interface A{
public String ff();
}
interface B{
public void ff();
}
class MYCLASS implements A,B{
public void ff(){
System.out.println("OVERWRITE ee");
}
public String ff(){
return "A:ff()";
}
}
public class ee{
public static void main(String[] args) {
MYCLASS Myclass=new MYCLASS();
Myclass.ff();
}
}
MYCLASS中如何重写A,与B的ff方法?因为他们各自ff()方法的类型不一样,而在MYCLASS中必须重写A与B的ff()。结果这造成同一类中写两个类型不同的同名方法
请发表意见。
interface A{
public void ff();
}
interface B{
public void ff();
}
class MYCLASS implements A,B{
public void ff(){
System.out.println("OVERWRITE ee");
}
}
public class ee{
public static void main(String[] args){
MYCLASS Myclass=new MYCLASS();
Myclass.ff();
}
}下面我们将程序稍改动一下,interface A{
public String ff();
}
interface B{
public void ff();
}
class MYCLASS implements A,B{
public void ff(){
System.out.println("OVERWRITE ee");
}
public String ff(){
return "A:ff()";
}
}
public class ee{
public static void main(String[] args) {
MYCLASS Myclass=new MYCLASS();
Myclass.ff();
}
}
MYCLASS中如何重写A,与B的ff方法?因为他们各自ff()方法的类型不一样,而在MYCLASS中必须重写A与B的ff()。结果这造成同一类中写两个类型不同的同名方法
请发表意见。
他们调用的不是A- M,也不是B- M,而是你实现的方法。第二个,主要是方法签名不明确造成的,返回类型不做为方法签名之列。深了我也说不了了,不懂JVM编译原理。