Когда мы говорим, что базовый класс Base
и его производный класс Derived
являются type compatible
, мы ссылаемся на тот факт, что ссылка Base
может ссылаться на экземпляр Derived
.
т.е.Base b = new Derived();
Для противоположного потребуется приведение, поскольку типы несовместимы по типам.
Теперь эта концепция не применима к примитивным типам?
Я имею в виду это
short shortNumber = 10;
int intNumber = shortNumber;
мне кажется, что это одно и то же (, так как приведение не требуется и как short
, так иint
являются интегральными типами).
Итак, почему при переопределении метода в базовом классе допустимо, чтобы тип возвращаемого значения был либо тем же, либо, по крайней мере, типом, совместимым с типом возвращаемого значения базового класса, но это также неприменимо, например, к целочисленным типам?
Например. почему это неприемлемо?
public class Person {
public int getId(){
return 1;
}
}
public class Employee extends Person {
public short getId(){
return 0;
}
}