向下转换为间接子类不起作用?

Down Casting to indirect subclass does not work?

        public class A
    {

      public void printA(){
        System.out.println("A");  
      }

    }


    public class B extends A
    {
       public void printB(){
        System.out.println("B");  
      }

    }

    public class C extends B
    {
       public void printC(){
        System.out.println("C");  
      }

    }

    public class test {
        public static void main(String[] args)
      {

     A  a = new B();
          a.printA(); // work

        B b = (B) a;
          b.printB(); // work

          C c = (C) b;
          c.printC(); // not work throw  java.lang.ClassCastException

      }
}

我有三个 类 A 和 B 和 C
C 从 B 延伸,B 从 A 延伸
为什么向下转换从 A 到 B 有效,而从 B 到 C 无效,尽管它们之间的关系像 A 和 B,B 是 C 的父级,所以它如何在 JVM 中工作??

类 只能转换到他们的父 类,他们不知道他们的子 类。

由于您的对象是 B 的实例,它没有实现 C 的方法。

这会起作用:

  A  a = new C();
  a.printA(); // work

  B b = (B) a;
  b.printB(); // work

  C c = (C) b;
  c.printC(); // work