다음 코드를 고려 생각 :다형성 자바
public class A{
private int num;
public A(int n){
num = n;
}
public int getNum(){
return num;
}
public boolean f(A a){
return num == a.num * 2;
}
}
public class B extends A {
public B(int n) {
super(n);
}
public boolean f(B b) {
return getNum() == b.getNum();
}
}
public class Main
{
public static void main(String[] args){
A y1 = new B(10);
B y2 = new B(10);
System.out.println("y1.f(y2) is: "+y1.f(y2));
}
}
방법 f
클래스 A
에 대한 실행 (거짓 인쇄 이유를 내가 이해하지 못하는 것은)이고 B
이 아니고 런타임에 원인이 y1
인 경우 B
이고 g o B
클래스의 f
메소드로 이동 하시겠습니까?
'C' 객체 란 무엇입니까? 나는 그것이 A의 또 다른 하위 클래스라고 추측하지만 어디에도 표시되지 않습니다. –
YES 원인이 질문과 관련이 없음 –
@ DanTemple : 'z1'과'z2'는 아무 곳에서도 사용되지 않는다는 점을 감안할 때, 이는 관련이 없으므로 (질문에서 제외해야합니다). –