나는 다음과 같은 예를하려고했다 :메서드 서명이 동일하지만 일반 매개 변수가 다른 경우 메서드 오버 라이딩 작업은 어떻게됩니까?
class BaseClass {
public void methodA(Class<?> cl) {
System.out.println("Base.methodA()");
}
}
class SubClass extends BaseClass {
public void methodA(Class cl) {
System.out.println("Sub.methodA()");
}
}
public class OverrideEx {
public static void main(String[] args) {
BaseClass b = new BaseClass();
BaseClass s = new SubClass();
b.methodA(Class.class);
s.methodA(Class.class);
}
}
출력 : Base.methodA() Sub.methodA()
을 나는 주위를 타고 방법 인수를 통해 다른 방법을 변경한다면 다음과 같이
class BaseClass {
public void methodA(Class cl) {
System.out.println("Base.methodA()");
}
}
class SubClass extends BaseClass {
public void methodA(Class<?> cl) {
System.out.println("Sub.methodA()");
}
}
public class OverrideEx {
public static void main(String[] args) {
BaseClass b = new BaseClass();
BaseClass s = new SubClass();
b.methodA(Class.class);
s.methodA(Class.class);
}
}
컴파일 오류가 발생합니다. "이름 충돌 : SubClass 유형의 methodA (Class) 메소드는 BaseClass 유형의 methodA (Class)와 동일한 삭제 기능을 갖지만이를 대체하지 않습니다."
왜 그럴까요?
이 답변은 http://stackoverflow.com/a/502770/1030409 – Patrick
가능한 복제본 [유형 지우기, 재정의 및 제네릭] (http://stackoverflow.com/questions/502614/type-erasure- 오버라이드 및 제네릭) –