1.当我们没有显示调用父类里面的构造方法的时候(即没有调用super()),默认会调用父类里面的无参构造方法,对父类的属性进行初始化。
2.可以用this调用同类里面其他方法:
1.当我们没有显示调用父类里面的构造方法的时候(即没有调用super()),默认会调用父类里面的无参构造方法,对父类的属性进行初始化。
2.可以用this调用同类里面其他方法:
继承中构造方法调用的注意事项
当我们没有显示调用父类里面的构造方法的时候,默认会调用父类里的无参构造方法,对父类里面的属性进行初始化。
super 调用父类的构造方法
super可继承父类的成员与无参构造方法
super(**,**);
super.**
构造子类时,会默认会调用父类里面的无参构造方法,对父类的属性进行初始化 ,隐式只会调用无参构造方法,若父类定义了有参构造方法则在构造子类时需显示调用父类构造方法 例如:super(a ,b,c,d);
package com.itheima_02;
public class ExtendsDemo1 {
public static void main(String[] args) {
/*Teacher t = new Teacher("苍井空",20,'女',"高级老师","生物","二班");
t.eat();
t.sleep();
t.teach();
Student s = new Student("东东",18,'男',2,5);
s.eat();
s.sleep();
s.learn();*/
/*Person p = new Person();
p.setName("苍老师");
p.setAge(12);
p.setGender('女');
p.setBirthday("8月9号");
p.eat();
p.sleep();*/
Teacher t = new Teacher("苍井空",20,'女',"2018-8-7","高级老师","生物","二班");
/*t.setName("苍井空");
t.setAge(20);
t.setGender('女');
t.setTitle("高级老师");
t.setClassName("二班");
t.setCourse("生物");*/
t.eat();
t.sleep();
t.teach();
t.test1();
t.test2();
t.show();
System.out.println("----");
Student s = new Student("东东",18,'男',"2018-8-7",2,5);
/*s.setName("东东");
s.setAge(18);
s.setGender('男');
s.setClassNumber(2);
s.setRankNumber(5);*/
s.eat();
s.sleep();
s.learn();
}
}
class Person{
public String name;
private int age;
private char gender;
private String birthday;
public Person(){}
public Person(String name,int age,char gender,String birthday){
this.name = name;
this.age = age;
this.gender = gender;
this.birthday = birthday;
}
public void eat(){
System.out.println("先交钱");
System.out.println(name+"在吃饭");
}
public void sleep(){
System.out.println(name+"在睡觉");
}
public String getBirthday(){
return birthday;
}
public void setBirthday(String birthday){
this.birthday = birthday;
}
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 char getGender(){
return gender;
}
public void setGender(char gender){
this.gender = gender;
}
}
class Teacher extends Person{
private String name;
private String title;
private String course;
private String className;
public Teacher(){}
public Teacher(String name,int age,char gender,String birthday,String title,String course,String className){
//super();//调用父类的无参构造
super(name,age,gender,birthday);
this.title = title;
this.course = course;
this.className = className;
}
public void show(){
System.out.println(this.name + "--"+ super.name);
}
public void test1(){
this.name = "test1";
}
public void test2(){
super.name = "test2";
}
public void teach(){
System.out.println(getName()+"在授课");
}
public String getTitle(){
return title;
}
public void setTitle(String title){
this.title=title;
}
public String getCourse(){
return course;
}
public void setCourse(String course){
this.course=course;
}public String getClassName(){
return className;
}
public void setClassName(String className){
this.className = className;
}
}
class Student extends Person{
private int classNumber;
private int rankNumber;
public Student(){}
public Student(String name,int age,char gender,String birthday,int classNumber,int rankNumber){
super(name,age,gender,birthday);
this.classNumber = classNumber;
this.rankNumber = rankNumber;
}
public void learn(){
System.out.println(getName()+"在上课学习");
}
public int getClassNumber(){
return classNumber;
}
public void setClassNumber(int classNumber){
this.classNumber = classNumber;
}
public int getRankNumber(){
return rankNumber;
}
public void setRankNumber(int rankNumber){
this.rankNumber = rankNumber;
}
}
显示:super(参数)