如果在子类里定义了与父类已有变量同名的变量,那么子类定义的变量会隐藏父类的变量,注意:不是完全覆盖,因此系统在创建子类对象时,依然会为父类中定义的被隐藏的变量分配内存空间。
为了在子类方法中访问父类中定义的被隐藏的实例变量或方法可以使用super关键字作为限定来修饰这些实例变量和实例方法。
class Fruit {
String color = "未确定的颜色";
public Fruit getthis() {
return this;
}
public void info(){
System.out.println("fruit的构造方法");
}
}
public class Apple extends Fruit{
public void info(){
System.out.println("Apple的方法");
}
public void getSuperInfo(){
super.info();
}
public Fruit getSuper(){
return super.getthis();
}
public static void main(String[] args) {
Apple a=new Apple();
//调用getsuper方法获取apple关联的super引用
Fruit f=a.getSuper();
System.out.println("a和f所引用的对象是否相同:"+(a==f));
a.getSuperInfo();
}
}
java程序允许某个方法通过return this返回调用该方法的对象,但是不可以使用return super
网友评论