Почему совместимость типов неприменима и к примитивам при переопределении методов?

Когда мы говорим, что базовый класс 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;  
    }  

}  
7
задан Cratylus 22 July 2012 в 09:11
поделиться