请各位用java语言编程,题目如下(用java,涉及super的用法,并解释一下程序时怎么运行的)

编写一个Person类,其中包括姓名和性别,年龄的属性,包含构造方法该构造方法实现参数赋值以及显示姓名,年龄,性别的方法。编写一个学生类student,其继承了Person类,其中包含了学号属性,包含构造方法以及显示学号的方法,最后编写一个主类X-3-5,包含main方法,定义学生s1与s2并给他们赋值,最后显示其学号,姓名,性别,以及年龄。(*super的用法)

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,这个你都不懂的话你先打好基础吧

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答