Ich habe diese 7 Klassen mit Vererbungsbeziehungen.Warum kann mein Code kompilieren, aber Teil I und Teil II haben Laufzeitfehler, während Teil III ist in Ordnung
public class ClassA {
public ClassA() {
}
public void printer(int x, String y)
{
System.out.println("Class A");
}
}
public class ClassB extends ClassA{
public ClassB() {
}
public void printer(int x)
{
System.out.println("Class B");
}
}
public class ClassC extends ClassA{
public ClassC() {
}
public void printer(String x, String y)
{
System.out.println("Class C");
}
}
public class ClassD extends ClassC{
public ClassD() {
}
public void printer(String a, String b)
{
System.out.println("Class D");
}
}
public class ClassE extends ClassC{
public ClassE() {
}
public void printer(String x)
{
System.out.println("Class E");
}
}
public class ClassF extends ClassE{
public ClassF() {
}
public void printer(int x)
{
System.out.println("Class F");
}
}
public class ClassG extends ClassE{
public ClassG() {
}
public void printer(String x)
{
System.out.println("Class G");
}
}
Darf ich fragen, warum der folgende Code in der Lage ist und zu kompilieren, warum gibt es einen Laufzeitfehler für i und ii aber iii in Ordnung ist. Es tut mir leid, wenn das ein leichtes Problem ist, aber ich habe mir stundenlang den Kopf darüber zerbrochen. Vielen Dank!
// part i
ClassA a = new ClassC();
ClassG g = (ClassG)a;
g.printer("hello");
// part ii
ClassA a = new ClassC();
ClassG g = (ClassG)a;
g.printer("hello", "there");
// part iii
ClassA a = new ClassF();;
ClassC f = (ClassC)a;
f.printer(88,"there");
Edited: Für Teil I und II, der Fehler ist: Exception in thread "main" java.lang.ClassCastException: ClassC nicht ClassG gegossen werden kann. Meine Frage betrifft Polymorphismus, Upcasting und Downcasting. Ich brauche Hilfe, um es zu verstehen. Vielen Dank!
Nun, was ist der Fehler ??? – OldProgrammer
Es tut mir leid, ich habe es als Code bereits eingegeben. Es gibt keinen Fehler, ich würde gerne wissen, warum mein Code kompilierbar ist, aber es gibt Laufzeitfehler für Teil I und II, während Teil III in Ordnung ist? Meine Frage betrifft Polymorphismus, Upcasting und Downcasting. Ich brauche Hilfe, um es zu verstehen. – user292965
Ein Laufzeitfehler ist ein Fehler. Wenn Sie fragen, warum Sie einen Fehler erhalten, sollten Sie den Fehler, den Sie in Ihrer Frage erhalten haben, mit angeben (complete stacktrace). – azurefrog