У меня есть проблемы с пониманием ниже кода (комментировал против номера строки)не в состоянии понять, наследование и переопределение/перегрузки в Java
class Base {
void m1(Object o) {
}
void m2(String o) {
}
}
public class Overloading extends Base {
void m1(String s) {
}
void m2(Object o) {
}
public static void main(String[] args) {
Object o = new Object();
Base base1 = new Base();
base1.m1("");//**why this works perfect**
Base base = new Overloading();
base.m2(o);// **why compile time error** - The method m2(String) in the type Base is not applicable for the arguments (Object)
Можно ли сказать, что поскольку String является подтипом объекта, он работает в первом случае, но поскольку объект не является подтипом String, второй не удается? – Prateek
@Prateek. да, вы можете так сказать. –
@RohitJain можно передать любой тип объекта в первом вызове void m1 (Object o) {}, так как каждый класс расширяет класс Object? –