Super关键字
父类:
package com.tiedandan.oop.super引用父类方法和属性;
public class Father {
public Father(){
System.out.println("父亲构造方法真正先执行!");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name="爸爸";
public void print(){
System.out.println("father is father");
}
}
子类:
package com.tiedandan.oop.super引用父类方法和属性;
public class Person extends Father {
public Person(){
//当子类继承父类时,测试方法new一个子类对象,这会先激活父类的构造方法,再激活子类的构造方法
//而且子类构造方法中隐藏了一句super();super();必须放在构造方法内第一行,用于调用父类构造方法
//若自己写出super();则此句必放第一行,不然报错。
//父类必须要有无参构造,不然子类super无法引用父类的无参构造而报错。
//所以在写有参构造的时候,隐藏的无参构造会失效,一定要把无参构造重写一遍。
System.out.println("儿子构造方法先执行");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name="儿子";
public void test1(){
this.name=name;
//super用于子类获得父类里公开的的属性和方法,但无法获得私有的。
//可以把鼠标光标移到name上,相同属性都有方块。
System.out.println(name);//name指的是person类里的name
System.out.println(this.name);//name指的是person类里的name
System.out.println(super.getName());//这里用super获得father里的name
super.print();//super调用父类方法。
}
}
测试类:
package com.tiedandan.oop.super引用父类方法和属性;
public class application {
public static void main(String[] args) {
Person person = new Person();
person.test1();
}
}