博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java代码执行顺序及多态体现
阅读量:6147 次
发布时间:2019-06-21

本文共 1079 字,大约阅读时间需要 3 分钟。

/** * Description: * 基类的引用变量可以只想基类的实例对象也可指向其子类的事来对象 * 接口的引用变量也可以指向实现类的实例对象 * 程序调用的方法在运行期才动态绑定 * 绑定指将一个对象调用和一个方法主体连接到一起,就是引用变量所指向的具体实例对象的方法,就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法 * 这种动态绑定实现了多态。只有方法有多条的概念 */public class Test {    /**     * 首先new Sub()的时候会首先调用Base的构造方法。     * 在Base的构造方法中会调用print方法,按照上述多态的特性     * 此时实例化的是Sub类的对象,所以实际会调用Sub类中的print方法。     * 此时Sub类中的非静态变量 int num = 3; 尚未执行,所以输出 Sub.num=0;     * 然后父类把在构造器中把num赋值为2     * 然后调用子类的构造方法     * 由初始化顺序:Sub中的非静态变量num初始化为3     * 然后调用子类的print方法输出Son.num=3     * 接着输出b.num     * 而属性是没有多态概念的, 所以会输出2     * @param args     */    public static void main(String[] args) {        Base b = new Sub();        System.out.println(b.num);    }}class Base {    int num = 1;    public Base() {        this.print();        num = 2;    }    public void print() {        System.out.println("Base.num = " + num);    }}class Sub extends Base {    int num = 3;    public Sub() {        this.print();        num = 4;    }    public void print() {        System.out.println("Sub.num = " + num);    }}

 

转载于:https://www.cnblogs.com/caicz/p/10844959.html

你可能感兴趣的文章
专访Connolly:为什么我们需要手动回归测试宣言?
查看>>
从AI医疗到量子计算,亚洲研究院如何成为微软发展的生命力?
查看>>
Red Hat与微软合作,将致力于构建企业级Linux版.NET
查看>>
Rust 1.27支持SIMD
查看>>
如何用度量影响敏捷环境
查看>>
未来的C#之覆写放宽
查看>>
GitHub GraphQL API已正式可用
查看>>
GitHub:我们为什么会弃用jQuery?
查看>>
苹果Q1财报出炉:手机收入下滑15%,服务收入增长19%
查看>>
用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识
查看>>
Pandas时间序列
查看>>
开发者论坛一周精粹(第四十八期) ICP经营许可证办理流程
查看>>
基于Go的websocket消息服务
查看>>
流计算独享模式正式邀测
查看>>
hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存
查看>>
Ceph,TFS,FastDFS,MogileFS,MooseFS,GlusterFS 对比
查看>>
无人机协助科研人员探寻珍稀植物,仅需20分钟
查看>>
CPU和内存 程序(线程)关系
查看>>
Maven属性(properties)标签的使用
查看>>
5月7日云栖精选夜读丨如何用阿里云快速构建游戏发行技术体系
查看>>