public class Test4 extends com.css.pan.Test3 {
    public static void main(String[] args) {
        Test4 test4 = new Test4();
        Test3 test3=new Test3();        test4=(Test4)test4.GetTest3(); //这里出错了(*)
       //get test3应该返回test3啊
       test3 = (Test3)test4.getTest3();        System.out.println(test4.Id);
        System.out.println(test4.Name);
    }
}
建议改成:
public class Test4 extends Test3 {
    public static void main(String[] args) {
        Test4 test4 = new Test4();        System.out.println(Id);
        System.out.println(Name);
    }
}

解决方案 »

  1.   

    你还要对id,和name赋值:
    这样做吧
    public class Test4 extends Test3 {
        public static void main(String[] args) {
            Test4 test4 = new Test4();
            test4.GetTest3();//赋值用。        System.out.println(Id);
            System.out.println(Name);
        }
    }
      

  2.   

    这样做是不行的,你这个Id和Name是归属不清,它是的野孩子,肯定会报错的
      

  3.   

    你的Test3的完整路径是com.t1.Test3,见第一句package com.t1;而你的public class Test4 extends com.css.pan.Test3 这两个Test3不一样啊
      

  4.   

    对楼上的的确说的没错,我没改了几次包名后,给望了将哪个改回去,不好意思。
    但是我后来改正确,成这个样子:Test3:
    package com.t1;public class Test3 {
           protected String Id;
           protected String Name;
           
           public Test3 GetTest3(){
               Test3 t3=new Test3();
               t3.Id="55";
               t3.Name="Hello";
               return t3;
           }}***********************************************
    Test4:
    package com.t2;
    public class Test4 extends com.t1.Test3 {
        public static void main(String[] args) {
            Test4 test4 = new Test4();
            Test3 test3=new Test3();        test4=(Test4)test4.GetTest3(); //这里还是出错了(*)
            System.out.println(test4.Id);
            System.out.println(test4.Name);
        }
    }但是还是在(*)出错,大家帮帮忙,谢谢了
    怎么解决这个问题。
      

  5.   

    因为T3和T4有继承上的关系,即使T4什么也没做,但是T4不是T3,所以造型肯定会出错的。
      

  6.   

    那么,我想问问各位,假如,现在就只有一个Test3,现在要得到Test3中的Id,Name值,那应该怎么做,应该Test并没有提供直接取Id或Name的方法,而是只提供一个返回 自身类对象的方法,现在大家会怎么处理。
    谢谢!
      

  7.   

    那么,我想问问各位,假如,现在就只有一个Test3,现在要得到Test3中的Id,Name值,那应该怎么做,应该Test并没有提供直接取Id或Name的方法,而是只提供一个返回 自身类对象的方法,现在大家会怎么处理。
    谢谢!
      

  8.   

    test4=(Test4)test4.GetTest3();
    test4.GetTest3()返回的Test3类型,我想找个类了接收返回值,然后再查看返回后的Test3中的Id,Name的值,你们不用看我的代码的,我已经告诉你们,我的目的了,只要达到我的目的就可以了,我上面的代码也只是测试而已,因为我不知道应该怎么做,只是想倒了这样的方法,试试而已,
    你们有什么方法告诉我就可以了,不一定要看我的代码的,
      

  9.   

    public class Test4 extends Test3 {
    public static void main(String[] args) {
    (new Test4()).getXX();
    }
    public void getXX(){
    GetTest3();
    System.out.println(Id);
    System.out.println(Name);
    }
    }
      

  10.   

    不过这样我觉得Test3的类有些滑稽。
      

  11.   

    Test4继承了Test3,因为自然就继承了Id和Name,因此
    Test4 test4 = new Test4();
    这样test4就可以访问Id和Name了啊。test4=(Test4)test4.GetTest3();这一句肯定是错的,因为
    test4.GetTest3()得到的是父类的对象,你要强制转换为子类型Test4,这是向下转型,是会错的。
      

  12.   

    不好意思 ,我被他们给玩死拉,原来哪个Test3类不止一个方法,还有专门的方法返回Id,Name
    不好意思,浪费了大家的时间,
    但是我 也是受害者,揭贴拉