package student;
class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(){
System.out.println("无参父类的构造方法");
}
public Person(int a){
System.out.println("有参父类的构造方法");
}
public String persons() {
return "他的名字叫"+this.name+"已经有"+this.age+"岁了";
}
}
class Child extends Person{
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public Child() {
super(0);//绝定子类在实例化时调用父类的那个构造方法,没写默认super(),即无参的构造方法,现在利用super先使用父类有参的构造方法
System.out.println("这是学生的无参构造方法");
}
public Child(int a) {
super();//绝定子类在实例化时调用父类的那个构造方法,没写默认super(),即无参的构造方法
System.out.println("这是学生的有参构造方法");
}
public void childs() {
System.out.println(super.persons()+",在"+this.school+"读书");
}
}
public class exercise {
public static void main(String[] args) {
Child c1=new Child();
c1.setAge(20);
c1.setName("张三");
c1.setSchool("天河学院");
c1.childs();
System.out.println("=================================");
Person p1 = new Person();
p1.setAge(50);
p1.setName("李四");
System.out.println(p1.persons());//不能用直接用p1.persons(),因为上面已经将这个方法的结果从直接输出改成返回值
System.out.println("=================================");
Child c2=new Child(0);
c2.setAge(21);
c2.setName("张3");
c2.setSchool("天河学院");
c2.childs();
//在子类实例化时先默认使用父类的无参构造
}
}
//子类在使用构造方法时先使用父类的构造方法在使用自己的构造方法,在子类的构造方法里的super会绝对你先调用父类的那个构造方法,没写默认为super(),即无参