Tôi có một cặp lớp ClassA & ClassB như hình dưới đây.
trường hợp 1:Java Generics - Phương pháp ghi đè
class ClassA<T extends Number>{
void method(T t){}
}
class ClassB extends ClassA<Integer>{
@Override
void method(Integer i){}
}
trường hợp 2:
class ClassA{
void method(Number t){}
}
class ClassB extends ClassA{
@Override
void method(Integer i){}
}
Tôi có hai câu hỏi ở đây.
[q1] Tôi có đúng không nếu tôi nói vậy, case2 là biểu diễn thời gian chạy của case1 (sau khi xóa)?
[q2] Nếu tôi đúng về [q1], thì tại sao case1 được chấp nhận là ghi đè hợp lệ? (Tôi biết lý do tại sao case2 không phải là ghi đè hợp lệ vì các thông số không giống nhau.)
Ai đó hãy làm sáng tỏ điều này. Cảm ơn trước.
Trong trường hợp '1', nó được xác định rằng 'T' là' Số nguyên', do đó trọng số với 'T = Số nguyên' là hợp lệ. Nhưng 'Số' không phải là' Số nguyên', nó sẽ hoạt động nếu nó là ' mở rộng Số> '.Hoặc ít nhất là có thể làm việc, tôi cần phải kiểm tra. – EpicPandaForce