加载子类时,父类做了什么?
来源:互联网 发布:论文盒子软件好用吗 编辑:程序博客网 时间:2024/06/13 23:32
在做android或者java开发时,我们很少考虑到类加载的事情,因为这些事情,虚拟机都帮我们做了。
可是,你有没有想过,当我们new了一个子类的时候,父类是个什么情况?
我们先说一下加载类时机。“类的代码在初次使用时才加载”,一般就是在我们new实例、使用静态域或者使用静态方法的时候去加载class文件。
当我们new一个子类时,要去加载子类,可是在加载子类时,发现了extends关键字,说明有父类,那么先去加载父类,以此类推,一直加载到Object。所有相关类加载完之后,从根基类开始执行静态变量、静态代码块,然后是下一个导出类,以此类推。静态方法在加载类的时候就会加载到内存静态存储区,无需构造类的实例就可以调用。至此,所有的类都已经加载完成,可以开始实例化了,实例化时,先从根基类的构造方法开始执行起,然后是下一个导出类,以此类推。在这个过程中,需要注意的是,虽然执行了父类的构造方法,但是没有生成父类的对象,“执行构造方法是为生成对象初始化的,并不是生成对象”。其实,最终只new了一个子类对象出来。
这里需要说明的是,权限问题,我们知道有四种权限:public、protected、private、默认权限。我觉得,在继承的时候,子类能把父类所有的东西都继承下来,只不过,有些东西子类不能访问而且也看不到,比如用private修饰的父类成员变量和成员方法,如果不是这样,就不叫继承了。
0 0
- 加载子类时,父类做了什么?
- 加载时错了什么?
- 子类从基类中继承下来了什么?
- 实例化子类之后发生了什么
- 【初级】C++中子类对象转型为父类对象时,编译器默默做了什么?
- 加载JDBC驱动程序时,底层都做了些什么
- Class.forName(String driverClassName)加载JDBC驱动程序时,底层都做了些什么???
- SystemManager在预加载期间都做了些什么
- JVM中类加载过程都做了什么
- 从输入URL到页面加载发生了什么
- 从输入URL到页面加载发生了什么
- 从输入url到加载界面完成,发生了什么?
- 从输入URL到页面加载,发生了什么
- 从地址栏输入URL到页面加载发生了什么
- 从输入URL到页面加载发生了什么
- 从输入URL到页面加载发生了什么
- 2 :为什么要类加载器,类加载器做了什么,加载类的过程
- Swift init UIViewController子类时无法加载对应在xib
- Twitter Storm: 配置开发环境
- 快书包“快送”概念难以为继:创业理念错了?
- RMAN的"rman: can't open target"
- Word Ladder II [leetcode]
- PopupWindow用来坐广告或者菜单效果
- 加载子类时,父类做了什么?
- Android侧滑栏+底部导航栏(选项卡)
- android shape的使用
- 需要弥补的那部分SQL
- IOS多线程之——GCD。
- AFNetwork 作用和用法详解
- Twitter Storm: Maven配置
- SSH原理与运用(一):远程登录
- BZOJ3720 Gty的妹子树