System.out.println(super.print() + " id:" 帮看下为什么有错的
/*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() 这里有错的呢
}
------解决方案--------------------
重复了 System.out.print()的括号里面不能再写System.out.print() super.print()的意思就是调用父类的print()方法即person类的print() 方法
------解决方案--------------------因为print方法是void,所以编译不通过
------解决方案--------------------super.print()没有返回值,怎么能进行相加操作?