public class X_3_5 {
public static void main(String[] args) {
Student s1 = new Student("aaa", "男", 20, "0001");
Student s2 = new Student("bbb", "女", 21, "0002");
System.out.println("学号\t姓名\t性别\t年龄");
s1.display();
s2.display();
}
}
abstract class Person {
private String name;
private String sex;
private int age;
public Person() {
}
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void display();
}
class Student extends Person {
private String stuNo;
public Student(String name, String sex, int age, String stuNo) {
// super的用法
super(name, sex, age);
this.stuNo = stuNo;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
@Override
public void display() {
System.out.println(String.format("%s\t%s\t%s\t%d", stuNo, getName(), getSex(), getAge()));
}
}
运行方法:
javac X_3_5 .java
java X_3_5
追问abstract class Person {
private String name;
public Person() {
}
public Person(String name,) {
this.name = name;
}
中的this.name = name;是什么意思,还有为什么要加上一个空的构造方法
追答空的构造方法可以不用加,这只是我的个人习惯,这是为了避免以后别人调用你的类用了空的构造方法,结果编译出错,或者以后用到类反射的时候要用这个来初始化。
this.name = name意思就是在Person对象初始化的时候把对象的name属性设置为参数中的name,这个你都不懂的话你先打好基础吧