刚刚学到JAVA继承,照着教程的例子,自己也写了两个,结果两个都运行不了,把教程上的例子运行一下,居然也运行不起来还望各位高手指点指点
具体如下:
第一个:ASD.java
class Test
{ int age;
  String name;
  Test(int a,String n)
  {
   age=a;
   name=n;
  }
}
class Test2 extends Test
{
String home="China";
}
public class ASD
{
   public static void main(String args[])
   {
   Test t1 = new Test(20,"ABC");
   Test2 t2 = new Test2(40,"DEF");
System.out.print("age="+t1.age+"\nname="+t1.name+"\nhome=");
System.out.print("age="+t2.age+"\nname="+t2.name+"\nhome="+t2.home);
   }
}
-----------------------------------------------------------------------
第二个:QWE.java
class Text
{ int age;
  String name;
  Test(int a,String n)
  {
   age=a;
   name=n;
  }
}
public class QWE extends Text
{
   public static void main(String args[])
   {
   Text t1 = new Text(20,"ABC");
   QWE q1 = new QWE(40,"DEF");
   String home="China";
System.out.print("age="+t1.age+"\nname="+t1.name+"\nhome=");
System.out.print("age="+q1.age+"\nname="+q1.name+"\nhome="+t2.home);
   }
}
-------------------------------------------------------------------
教程上的例子:Person3.java
public class Person3
{
    protected String name;                   //保护成员
    protected int age;
    void setdata(String n1,int a1) 
    {
        name = n1;
        age = a1;
    } 
    public void print()
    {
        System.out.println(name+", "+age);
    }
}
class Student3 extends  Person3   
{
    protected String dept;
    public static void main(String args[])
    {
        Person3 p1 = new Person3();
        p1.setdata("李大广",21) ; 
        p1.print();
        Student3 s1 = new Student3() ; 
        s1.setdata("陈小瑞",19);             //调用超类的成员方法
        s1.dept="计算机系";                  //访问本类的成员变量
        s1.print();
    }
}

解决方案 »

  1.   

    第一个: 
    class Test
    {
        int age;
        String name;    Test(int a, String n)
        {
            age = a;
            name = n;
        }
    }class Test2 extends Test
    {
        // 这个构造函数是我后加的,可以运行了
        Test2(int a, String n)
        {
            super(a, n);
        }    String home = "China";
    }public class ASD
    {
        public static void main(String args[])
        {
            Test t1 = new Test(20, "ABC");
            Test2 t2 = new Test2(40, "DEF");
            System.out.print("age=" + t1.age + "\nname=" + t1.name + "\nhome=");
            System.out.print("age=" + t2.age + "\nname=" + t2.name + "\nhome=" + t2.home);
        }
    }
      

  2.   

    第二个:
    class Text
    {
        int age;
        String name;
        // 构造函数加了个public, 构造函数方法名也写错了(应该是敲错了吧)
        // 你写的什么你自己看吧! 
        public Text(int a, String n)
        {
            age = a;
            name = n;
        }
    }public class QWE extends Text
    {
        // 这个也是我加的方法!
        public QWE(int a, String n)
        {
            super(a, n);
            // TODO Auto-generated constructor stub
        }
        // 这行是从下面的方法中移出来的!
        String home = "China";    public static void main(String args[])
        {
            Text t1 = new Text(20, "ABC");
            QWE q1 = new QWE(40, "DEF");
            System.out.print("age=" + t1.age + "\nname=" + t1.name + "\nhome=");
            // 下行你写了个错误的变量名 t2, 以后别这么马虎了! 不然没人帮你看程序.自己敲错
            // 了字母的还要让别人给你找错误!
            System.out.print("age=" + q1.age + "\nname=" + q1.name + "\nhome=" +q1.home);
        }
    }
      

  3.   

    谢谢楼上朋友的修正!都运行成功了~
    还有点不明白,只有构造函数的类不能被继承吗?继承的时候都用了一次super,是重写/覆盖?
    看的是[JAVA2程序设计]的PPT,上面讲的太简单了.....
      

  4.   

    第三题:
    // 这个类前 public 去掉了,填在了下面的类前.
    // 因为必须把有main()函数的类声明为public的
    class Person3
    {
        protected String name;                   //保护成员
        protected int age;
        void setdata(String n1,int a1) 
        {
            name = n1;
            age = a1;
        } 
        public void print()
        {
            System.out.println(name+", "+age);
        }
    }
    public class Student3 extends Person3
    {
        protected String dept;
        public static void main(String args[])
        {
            Person3 p1 = new Person3();
            p1.setdata("李大广",21) ; 
            p1.print();
            Student3 s1 = new Student3() ; 
            s1.setdata("陈小瑞",19);             //调用超类的成员方法
            s1.dept="计算机系";                  //访问本类的成员变量
            s1.print();
        }
    }
      

  5.   

    不能重新编辑帖子?.....
    而且this这个东西..似乎"有"和"没有"结果都是一样的
    去掉了程序一样正常运行?
      

  6.   

    不能重新编辑帖子?.....
    而且this这个东西..似乎"有"和"没有"结果都是一样的
    去掉了程序一样正常运行?
    ----------------------------------------------------------
    加this只是为了显式表明用的属性或方法是本类的,它在某些时候还是有用的! 例子如下:
    class Person 
    {
       int age;   public setAge(int age)
       {
           this.age = age; // 因为类属性与参数同名, 所以必须要显示指出,不加的话楼主试试.
       }
    }