Java代码执行顺序及多态体现

/** * 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); } }

 


__EOF__

本文作者菜菜
本文链接https://www.cnblogs.com/caicz/p/10844959.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   菜菜聊架构  阅读(539)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示