public interface B{ public void func(); } public class A implements B{ public void func(){return ;} public void func0{func();} }假如还存在一个类C,C实现了B的func()方法。那么func0调用的func()到底应该是A自身的呢,还是C实现的那个呢? 小弟是java新手,请执教
interface B{ public void func(); }public class A implements B{ public static void main(String args []){ //父类引用指向子类对象,方法重写,有继承,这不就是多态吗?
//a是接口B的引用,指向了子类A和C的对象 B a=new A(); //为什么输出结果是A,因为多态,编译器会在运行时决定到底是调用谁。 //总结new谁调谁,new的是A调的就是A类的func()方法,new的是B调的是B类的方法 a.func();
//输出结果是A
a=new C(); a.func(); //输出结果是B }
public void func(){ System.out.println("A"); //func();楼主这样写是有错误的,这里会一直调用func(); //这里调用的是自己的func()方法,更C类没有联系 } } class C implements B{ //方法的重写 public void func(){ System.out.println("B");
interface B{
public void func();
}public class A implements B{
public static void main(String args []){
//父类引用指向子类对象,方法重写,有继承,这不就是多态吗?
//a是接口B的引用,指向了子类A和C的对象
B a=new A();
//为什么输出结果是A,因为多态,编译器会在运行时决定到底是调用谁。
//总结new谁调谁,new的是A调的就是A类的func()方法,new的是B调的是B类的方法
a.func();
//输出结果是A
a=new C();
a.func();
//输出结果是B
}
public void func(){
System.out.println("A");
//func();楼主这样写是有错误的,这里会一直调用func();
//这里调用的是自己的func()方法,更C类没有联系
}
} class C implements B{
//方法的重写
public void func(){
System.out.println("B");
}
}
如果C和A没关系,那么就是调用C自身实现的那个方法
如果C是A的子类,那么如果C重写了func方法,那么就是调用C自身的,否则就是调用A的
这个方法是A得,不是C的,因此它里面的func();是不可能调C类的。
具体调的可能是A类的