Java: Casting ParentClass und ChildClass (Niedergeschlagen Runtime Error)

public class InheritanceDemo {

    public static void main(String[] args) {

        ParentClass p = new ParentClass();
        ChildClass c = new ChildClass();

        //Casting ChildClass to ParentClass
        ParentClass pc = new ChildClass();
        pc.parentClassMethod(); //Output: Parent Class Method (as expected)

        //Again Casting Parent Class to ChildClass explictly
        //Question 1 for this code
        ChildClass cp = (ChildClass) pc;
        cp.parentClassMethod(); //Output: Parent Class Method (unexpected)

        ChildClass cc1 = (ChildClass) new ParentClass();
        cc1.parentClassMethod(); //Compiles, but Run Time Error

        ChildClass cc2 = (ChildClass) p;
        cc2.parentClassMethod(); //Compiles, but Run Time Error

    }
}

class ParentClass {

    public void parentClassMethod(){
        System.out.println("Parent Class Method");
    }

}

class ChildClass extends ParentClass {

    public void ParentClassMethod(){
        System.out.println("Parent Class Method From Child Class");
    }

    public void ChildClassMethod(){
        System.out.println("Child Class Method");
    }

}

Frage 1:

Nun, ich habe eine Methode namens parentClassMethod in beiden ParentClass und ChildClass Klassen(außer Kraft gesetzt). Wenn ich cast den ParentClass zu ChildClass und rufen Sie dann die parentClassMethod, warum ist es, die Ausführung der ParentClass - Methode anstelle der Methode von ChildClass wenn cp bezieht sich auf ChildClass?

Question2:

(i) ChildClass cp = (ChildClass) pc;

(ii) ChildClass cc1 = (ChildClass) new ParentClass();
(iii) ChildClass cc2 = (ChildClass) p;

Wenn (ich) ist in Ordnung, warum nicht (ii) oder (iii)?

Weil ich am casting von ParentClass zu ChildClass in beiden Fällen?

InformationsquelleAutor Sudheer | 2013-01-19

Schreibe einen Kommentar