java中的super和继承
java中的super
父类代码如下:
package oop.Demo05;
//Person = 人
public class Person{
public Person() {//父类构造器,会在子类构造器中优先执行
System.out.println("Person无参构造执行了");
}
protected String name = "zhazhawei";
private int money = 1_0000_0000;
public void say(){
System.out.println("说了一句话");
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
子类代码如下
package oop.Demo05;
//Student is 人 是父类Person的派生类、子类
//子类继承父类就会有父类的全部方法
//java中,所有的类都默认直接或者间接继承object这个类(祖宗类)
//子类调用父类的方法和属性字段等,使用super.来调用
//在构造器中,super必须放在代码的第一行。
//父类构造器为有参构造器,则子类调用时也必须是有参
public class Student extends Person{
public Student(){
super();//Person无参构造执行了,在子类构造器中,不论是否有super,都会先去执行父类的构造器
System.out.println("Student无参构造执行了");
}
private String name="zxw";
public void test(String name){
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
}
//Student is 人 是父类Person的派生类、子类
//子类继承父类就会有父类的全部方法
//java中,所有的类都默认直接或者间接继承object这个类(祖宗类)
//子类调用父类的方法和属性字段等,可以使用super.来调用
//在构造器中,super必须放在代码的第一行。
//父类构造器为有参构造器,则子类调用时也必须是有参
//super只能出现在子类的方法或者构造器方法中
//super和this不能同时调用构造方法
对比this:
代表的对象不同:
this:代表本身调用者这个对象(在这个文件的代码中就是代表这个文件的对象)
super:代表父类对象的应用
前提:
this:在没有继承也可以使用
super:只能在继承条件下才可以使用
构造方法:
this();本类的构造