Почему ссылочная переменная типа объекта должна быть приведена при использовании в качестве другого типа объекта

Хотя все классы в 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

    }

}

Ответы на вопрос(4)

Ваш ответ на вопрос