zoukankan      html  css  js  c++  java
  • super限定,子类中系统查找变量的顺序:

    示例代码如下:

    import static java.lang.System.*;
    //-父类:
    class BaseClass{
    	public int a=7;
    }
    
    //-子类:
    public class SubClass extends BaseClass{
    	public int a=5;
    
    	public static void main(String[] args){
    		SubClass s=new SubClass();
    		s.outSuba();
    		s.outBasea();
    	}
    	
    	public void outSuba(){
    		out.println(a);
    	}
    
    	public void outBasea(){
    		out.println(super.a);
    	}
    }
    

    运行结果:

    代码说明:

    1、父类BaseClass和子类SubClass都定义了名为a的实例变量,子类a的实例变量将会隐藏父类a的实例变量

    2、当系统创建子类SubClass对象s时,实际会为s对象分配两块内存存放变量a,一块存放子类的变量a,一块存放从父类继承来的变量a

    在子类中调用某变量a,系统的查找顺序为:

    1、查找当前调用方法中是否有名为a的局部变量

    2、查找当前类中是否包含名为a的成员变量

    3、查找当前类的父类中是否包含名为a的成员变量,依次上溯所有父类,直到java.lang.Object类

    4、如果最终不能找到名为a的成员变量,则系统出现编译错误

  • 相关阅读:
    一些可以参考的常用工具库类整理
    Java(Android)线程池 总结
    JAVA泛型
    设计模式总结
    原型模式
    工厂模式与抽象工厂模式
    组合模式
    适配器模式
    建造者模式
    外观模式
  • 原文地址:https://www.cnblogs.com/baby-zhude/p/8018821.html
Copyright © 2011-2022 走看看