package com.dd; public class ExtendsTest { public static void main(String[] args) { 
A a = new A(); 
B b = (B)a; 
b.func1(); 
b.func2(); 

} class A { 
public void func1(){ 
System.out.println("ddd"); 


class B extends A { 
public void func2(){ 
System.out.println("eeee"); 

} 这个程序我要的结果是: ddd 
                    eeee 但总报错,Exception in thread "main" java.lang.ClassCastException: com.dd.A 
at com.dd.ExtendsTest.main(ExtendsTest.java:7) 是什么原因?望高手解答。谢谢!

解决方案 »

  1.   

    package com.dd; public class ExtendsTest { public static void main(String[] args) { 
    //A a = new A(); 
    B b = new B(); 
    b.func1(); 
    b.func2(); 

    } class A { 
    public void func1(){ 
    System.out.println("ddd"); 


    class B extends A { 
    public void func2(){ 
    System.out.println("eeee"); 

      

  2.   

    A a = new A(); 
    B b = (B)a; A 是 B 的父类a实际上是一个A的对象怎么能把父类对象Cast成儿子呢
      

  3.   

    楼主一个问题问了两个版块啊  呵呵  给分给分另外告诉你一下  J2SE版里  7,8楼的说法是错误的。
      

  4.   

    你只要  把  b.func1();   换成 :  super.func1();  就OK 了
      

  5.   

    写错了    你应该在B  里面加一个 func1(){ super.func1() }
    然后MIAN 方法里面的方法应该就可以了
      

  6.   

    你这里逻辑有错误  为什么要用 B的一个对象b去指向它的父类A的对象a呢?(而且这样是转不过来的,也调用不了B类中的func2()方法,因为此时根本就没有产生出B类的对象
    要想打出 ddd 和 eeee,直接B b = new B(),再b.func1();和b.func2();不就行了?---继承.
     基本概念没清楚哈.
      

  7.   

    ClassCastException 强制类型转换中转换到的类型和对象实际类型不兼容。