继承时单继承不可多继承
同一个构造器内 this()和super()不可同时存在,因为它们都需要在构造器内部第一行执行
接下来写两个对象展示一下
父类Pepole
//Pepole的对象 有年龄和性别两种属性
public class Pepole {
public String name;
public String sex;
//创建一个有参构造器
public Pepole(String name, String sex) {
this.name = name;
this.sex = sex;
}
//创建一个无参构造器 本来是默认存在的 但是如果创建一个 有参的构造器的话 必须创建一个无参构造器
public Pepole() {
}
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;
}
@Override
public String toString() {
return "Pepole{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
子类
public class Student extends Pepole{
public String schoolName;
public Student(String name, String sex, String schoolName) {
super(name, sex);
this.schoolName = schoolName;
}
public Student() {
}
//创建一个两个参数的构造器接受 家里蹲大学的
public Student(String name, String sex) {
this(name, sex, "家里蹲大学");
}
public String getSchoolName() {
return schoolName;
}
public void setSchoolName(String schoolName) {
this.schoolName = schoolName;
}
public void studentInfo(){
System.out.println("===姓名==="+super.name+"===性别==="+super.sex+"===学校==="+this.schoolName);
}
@Override
public String toString() {
return "Student{" +
"schoolName='" + schoolName + '\'' +
'}';
}
当前代码实现的是当只传入两个对象时,第三个参数默认为家里蹲大学
this()关键字调用的是兄弟构造器,也就是当前对象的其他构造器,
//创建一个两个参数的构造器接受 家里蹲大学的
public Student(String name, String sex) {
this(name, sex, "家里蹲大学");
}
super()关键字调用的是父类构造器,也就是当前子类的父类构造器
//注意当前构造器是 两个参数时调用的this()方法调用的构造器,其中super()方法本来是默认的但是这里我指定调用到了父类有参的构造器方法
public Student(String name, String sex, String schoolName)
super(name, sex);
this.schoolName = schoolName;
}
运行
public static void main(String[] args) {
//当输入没有输入学校时 默认家里蹲大学
Student student=new Student("李四","男");
student.studentInfo();
}
运行结果