Почему ссылочная переменная типа объекта должна быть приведена при использовании в качестве другого типа объекта
Хотя все классы в Java являются подклассами класса Object, но отличаются от других типов объектов, ссылочная переменная типа Object не может быть назначена никакому другому ссылочному типу без преобразования.
Например:
public class Inheritance {
public static class Animal {
public void Scream() {
System.out.println("I'm an animal");
}
}
public static class Mammal extends Animal{
public void Scream(){
System.out.println("I'm a mammal");
}
}
public static class Tiger extends Mammal{
public void Scream(){
System.out.println("I'm a tiger");
}
}
public static void main (String[] args){
Animal tiger = new Tiger();
tiger.Scream(); //true
Object tiger = new Tiger();
tiger.Scream(); //false
Object tiger = new Tiger();
((Animal) tiger).Scream(); //true
}
}