У меня есть пара классов ClassA и ClassB, как показано ниже.
случай 1:
class ClassA<T extends Number>{
void method(T t){}
}
class ClassB extends ClassA<Integer>{
@Override
void method(Integer i){}
}
случай 2:
class ClassA{
void method(Number t){}
}
class ClassB extends ClassA{
@Override
void method(Integer i){}
}
У меня здесь два вопроса.
[Q1]
Правильно ли, если я скажу, что case2 является представлением среды выполнения case1 (после стирания типа)?
[д2] Если я прав [q1], то почему case1 принимается как действительное переопределение? (Я знаю, почему case2 не является допустимым переопределением, поскольку параметры не совпадают.)
Кто-то, пожалуйста, пролил свет на это. Спасибо заранее.