어제 비슷한 질문을했지만 다른 문제가 발생했습니다.다형성 - 모호한 오류
class Cat {
public void isClawedBy(Cat c, Kitten k){
System.out.println("Clawed by a cat");
}
}
class Kitten extends Cat{
public void isClawedBy(Kitten k, Cat c){
System.out.println("Clawed by a Kit");
}
}
Cat g = new Cat();
Cat s = new Kitten();
Kitten t = new Kitten();
g.isClawedBy(s,t);
s.isClawedBy(t,s);
t.isClawedBy(t,t);
제가 혼란스러워하는 문제는 약 t.isClawedBy(t,t);
입니다. s가 정적 유형 cat이기 때문에 s.isClawedBy(t,s);
이 오류를 발생시키는 것을 알고 있습니다.
그러나 t.isClawedBy(t,t);
은 "Kitten 유형에 대해 isClawedBy (Kitten, Cat) 메소드가 모호합니다."라는 오류가 발생합니다. 내가 코드를 t.isClawedBy(s,t);
또는 t.isClawedBy(t,s);
으로 변경하면 작동하지만, (t, t)가 작동하지 않는 이유는 확실하지 않습니다.
미리 감사드립니다.
나는 많은 조합을 시도하면서 이해하려는 방식을 좋아합니다. – nachokk
다른 사람들은 이미 설명했습니다. 팁 하나만 - @Override 주석을 사용하여 컴파일러에 의도를 알리는 것을 고려하십시오. 당신은 놀라지 않을 것이고 컴파일러는 당신이 어떤 방법보다 우선하지 않는다고 말할 것입니다. – wjtk