/*1.编写2个类:Person和Student,Person类有姓名,性别,年龄,要求全为private。 
构造函数必须同时初始化3个属性。有一个public方法自我介绍,直接println姓名,性别,年龄。
Student类继承Person,有id(学号)和classroom(班级),全为private。
构造函数必须同时初始化所有属性。public方法自我介绍:先按照Person的格式println姓名,性别,年龄,然后再println学号和班级。
*/class Day7 {
public static void main(String[] args) {
Person per = new Person("小蓝", "男", "23");
per.print();
Person stu = new Student("小文", "男", "24", "33", "7班"); //父类引用指向子类对象,多态
stu.print();
}
}class Person {
private String name;
private String sex;
private String age;

Person(String name, String sex, String age) {
this.setName(name);
this.setSex(sex);
this.setAge(age);
}

public void print() {
System.out.println("姓名:" + this.getName() + " 性别:" + this.getSex() + " 年龄:" + this.getAge());
}


public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setAge(String age) {
this.age = age;
}
public String getAge() {
return age;
}
}class Student extends Person{
private String id;
private String classes;

Student(String name, String sex, String age, String id, String classes) { super(name, sex, age); //super:调用基类构造方法::super(argument_list);
this.id = id;
this.classes = classes;
}

public void print() {
System.out.println(super.print() + " id:" + this.getId() + " 班级:" + this.getClasses());
}

public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setClasses(String classes) {
this.classes = classes;
}
public String getClasses() {
return classes;
}为什么super.print() 这里有错的呢

}

解决方案 »

  1.   

    重复了 System.out.print()的括号里面不能再写System.out.print()  super.print()的意思就是调用父类的print()方法即person类的print()  方法 
      

  2.   

    因为print方法是void,所以编译不通过
      

  3.   

    class Day7 
    {
        public static void main(String[] args) 
        {
               Person per = new Person("小蓝", "男", "23");
               per.print();
               System.out.println(per.print());
               Person stu = new Student("小文", "男", "24", "33", "7班"); //父类引用指向子类对象,多态
               stu.print();
               System.out.println(stu.print());
        }
    }class Person {
        private String name;
        private String sex;
        private String age;Person(String name, String sex, String age) {
    this.name=name;
    this.sex=sex;
    this.age=age;
    }String print() {return "姓名:" + this.getName() + " 性别:" + this.getSex() + " 年龄:" + this.getAge();}
    public void setName(String name) {
    this.name = name;
    }
    public String getName() {
    return name;
    }
    public void setSex(String sex) {
    this.sex = sex;
    }
    public String getSex() {
    return sex;
    }
    public void setAge(String age) {
    this.age = age;
    }
    public String getAge() {
    return age;
    }
    }class Student extends Person
    {
       private String id;
       private String classes;   Student(String name, String sex, String age, String id, String classes) 
       { 
          super(name, sex, age); //super:调用基类构造方法::super(argument_list);
          this.id = id;
          this.classes = classes;
       }   String print()
       {   
          return  super.print() + " id:" + this.getId() + " 班级:" + this.getClasses();
       
       }   public void setId(String id) 
       {
           this.id = id;
       }
    public String getId() 
    {
    return id;
    }
    public void setClasses(String classes) 
    {
    this.classes = classes;
    }
    public String getClasses()
    {
    return classes;
    }
      

  4.   

    是void修饰的方法print()的问题:在main()方法中per.print()与stu.print()可以删除
      

  5.   

    super.print()没有返回值,怎么能进行相加操作?