子类除了可以对父类中的方法进行覆写外,也可以对非private定义的的父类属性进行覆盖,此时只需要定义父类中成员属性相一致的名称即可。
public class Demo170 {
String info="www.lilei.com";
}
public class Demo170last extends Demo170{
int info=12;
public void fun() {
System.out.println("父类"+super.info);
System.out.println("子类"+this.info);
}
}
public class Demo170main {
public static void main(String[] args) {
Demo170last fu=new Demo170last();
fu.fun();
}
}
执行结果
父类www.lilei.com
子类12
本程序在子类中定义了一个与父类名称相同,但是类型不同的成员属性info,所以此时就发生了属性覆盖,在子类中如果要调用父类的成员属性就必须通过super.info执行。
提示:this与super的区别
this与super调用构造方法时必须都放在构造方法的首行,但是不管如何调用子类一定会有一个构造方法调父类构造。