本帖最后由 a281346230 于 2009-10-11 21:48:34 编辑

解决方案 »

  1.   

    原来上课老师布置过的作业 很早了 
    程序有一个父类 两个子类 你仔细看看吧 应该可以明白
    class Card
    {
    private int number;//编号
    private String name;//姓名
    private String sex;//性别
    private int dateOfBirth;//出生年月 public Card()//这就是无参数的构造方法
    {
    number = 0;
    name = "Not name yet";
    sex = "No message";
    dateOfBirth = 0;
    } public Card(int newNumber,String newName,String newSex,int newDateOfBirth)
    {
    number = newNumber;
    name = newName;
    sex = newSex;
    dateOfBirth = newDateOfBirth;
    } public void setNumber(int newNumber)
    {
    number = newNumber;
    } public void setName(String newName)
    {
    name = newName;
    } public void setSex(String newSex)
    {
    sex = newSex;
    } public void setBirth(String newDateOfBirth)
    {
    dateOfBirth = newDateOfBirth;
    } public 
    }class StudentCard extends Card
    {
    private String department;//系别
    private int dateIntoSchool;//入校日期
    private String registerMessage;//注册信息 public StudentCard()
    {
    super();//调用父类中无参的构造方法
    department = "Not Department Yet";
    dateIntoSchool = 0;
    registerMessage = "Not Message Yet";
    } public StudentCard(String department,int dateIntoSchool,String registerMessage,int newNumber,String newName,String newSex,int newDateOfBirth)
    {
    super(int newNumber,String newName,String newSex,int newDateOfBirth);//调用父类中被重载的构造方法
    this.department = department;//this关键字表示指示当前的数据对象
    this.dateIntoSchool = dateIntoSchool;
    this.registerMessage = registerMessage;
    } public void setDepart(String department)
    {
    this.department = department;
    } public void setDateIntoSchool(int dateIntoSchool)
    {
    this.dateIntoSchool = dateIntoSchool;
    } public void setRegisterMessage(String registerMessage)
    {
    this.registerMessage = registerMessage;
    } public String getDepart()
    {
    return department;
    } public int getDate()
    {
    return dateIntoSchool;
    } public String getRegisterMessage()
    {
    return registerMessage;
    }
    }class TeacherCard extends Card
    {
    private String position;//职务
    private int dateOfCard;//工作证签发日期
    }
      

  2.   

    还有上面这个程序为什么他调用的父类的方法?这个调用的是子类的方法。
    public class Test{
    public static void main(String[] args) throws Exception{
    B b = new B();
    }
    }class A{
    public A(){
    System.out.println("父类构造方法被调用");
    }
    public A(int i){
    System.out.println("父类带参数的构造方法被调用");
    }
    }
    class B extends A{
    public B(){
    //super(1);
    //super();//子类默认调用父类无惨构造函数,写不写都一样
    System.out.println("子类构造方法被调用");
    }
    }
      

  3.   

    调用构造方法时都是先调用父类的构造方法(没有显式调用的时候调默认的super()),让后调用自己的,应该是在子类的构造方法里第一行有个隐藏的super()
      

  4.   

    第二个程序 new出来的是B的对象。第一个调用的是b.A(),所以第二个调用的是子程序
      

  5.   

    public class Test{
        public static void main(String[] args) throws Exception{
            B b = new B();
        }
    }class A{
        public A(){
            System.out.println("父类构造方法被调用");
        }
        public A(int i){
            System.out.println("父类带参数的构造方法被调用");
        }
    }
    class B extends A{
        public B(){
            //super(1);
            //super();//子类默认调用父类无惨构造函数,写不写都一样
            System.out.println("子类构造方法被调用");
        }
    }
      

  6.   

    class Temp{
    public static void main(String args[]){
    Student s1 = new Student();

    }
    }
    class Person{
    String name;
    int age;
    public Person(){
    System.out.println("无参构造方法");
    }

    public void Person(String name,int age){
    this.name = name;
    this.age = age;
    }
    void Info(){
    System.out.println("姓名:" + name + "年龄:" + age);
    }
    }
    class Student extends Person{
    String school = "学校";
    public Student(){
    super();//调用父类无参构造方法
    }
    } public Student(String name,int age){
    this.name = name;
    this.age = age;
    }
    public Student(String name,int age,String school){
    super(name,age);
    this.school = school;
    }那我这样写为什么是错的?
    Temp.java:158: 需要 "class" 或 "interface"
            public Student(String name,int age){
      

  7.   

    public Student(){
            super();//调用父类无参构造方法
        }
    }//这个大括号放错地方了
      

  8.   

    后面的方法定义到Student外面了,就不是构造方法了,所以他提示你需要类或者接口。
      

  9.   

    public A()
    public void A()
    是重写么?
      

  10.   

    class Student extends Person{
    String school = "学校";
    public Student(){
    super();//调用父类无参构造方法
    }

    public void Student(String name,int age){
    this.name = name;
    this.age = age;
    }
    public void Student(String name,int age,String school){
    super(name,age);
    this.school = school;
    }
    }
    怎么他还提示:对 super 的调用必须是构造函数中的第一个语句
     super(name,age);
      

  11.   

    http://blog.csdn.net/ZangXT/archive/2009/09/30/4619345.aspx
    构造方法并非类的成员,所以没有继承之说。
      

  12.   

    在子类构造器中:
    1.如果需要显式的调用父类的构造器,则必须是第一个语句
    2.如果没有显式的调用父类的构造器,则编译器会自动添加一个隐式的父类无参数构造器super()
    这个是Java的规定