Dziedziczenie Java (zastępowanie i przeciążanie metody)

Poza tym dziedziczenie Java jest podstawową cechą języka, mam kilka pytań.
Oto źródło mojego przykładu testowego:

class MyClass{

    public void say(String t){
        System.out.println("Hello MyClass "+t);
    }

    public void print(MyClass t){
        System.out.println("MyClass is printed");
    }

    public void anotherPrint(int i){
        System.out.println("MyClass is printed again");
    }
}

class MyClass2 extends MyClass{

    public void say(String t){
        System.out.println("Hello MyClass2 "+t);
    }

    public void print(MyClass2 t){
        System.out.println("MyClass2 is printed");
    }

    public void anotherPrint(double i){
        System.out.println("MyClass2 is printed again");
    }
}

public class HelloWorld{

    public static void main(String []args){
        MyClass klass = new MyClass2();

        klass.say("h"); //Question 1 (Prints: "Hello MyClass2 h")

        klass.print(new MyClass2()); //Question 2 (Prints: "MyClass is printed")
        klass.print(new MyClass()); //Question 3 (Prints: "MyClass is printed")

        klass.anotherPrint(1); //Question 4 (Prints: "MyClass is printed again")
        klass.anotherPrint(1.0); //Question 5 (Throws Exception!)
    }
}

Mam następujące pytania:

1. Obiekt klass jest instancjąMyClass. Dlaczego wykonuje metodę zMyClass2 klasa?

2,3. Na pytanie 1 klass nazywa metodęMyClass2 klasa. Tutaj użyłem parametru, który pasuje do każdej z przesłoniętych i przeciążonych (jednocześnie) metod. Dlaczego obiekt klass zawsze wywołuje metodę zMyClass klasa?

4. To normalne. Bez wątpienia.

5. Dobrze jest rzucić wyjątek. Obiekt klass nie ma tej metody z podwójnym parametrem. Ale dlaczego nie nazywa się go metodą zMyClass2 klasa, tak jak to miało miejsce w pytaniu 1?

questionAnswers(4)

yourAnswerToTheQuestion