'a.eat()'아래의 코드는 컴파일 오류가 발생하거나 선언되어야합니다.예외 컴파일러 오류가있는 메서드 재정의
class Animal {
public void eat() throws Exception {}
}
class Dog extends Animal {
public void eat() {}
public static void main(String [] args) {
Animal a = new Dog();
Dog d = new Dog();
d.eat();
a.eat();//Causes compilation error as 'a' was not declared or caught
}
}
컴파일러가 여전히 예외를 선언하는 메서드를 호출한다고 생각하는 이유는 무엇입니까? 컴파일러가 'd.eat()'에서와 같이 하위 형식에 의해 메서드가 재정의 된 것을 보는 이유는 무엇입니까?
'a'는 '동물'이기 때문에. – tkausl
일반적으로 볼 수 없습니다. 그리고 그것은 일관성이 있어야합니다. –