`
lihengzkj
  • 浏览: 45035 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关于动态绑定的深入

JVM 
阅读更多
还是先看看示例代码:
public class Child extends Parent{
	private int i =3;
	public Child() {
		// TODO Auto-generated constructor stub
	}
	public final void test1(){
		System.out.println("-----");
	}
	public static void main(String [] args){
		Child child = new Child();
		child.test();
	}
	public void test(){
		System.out.println("^^^^^^^^^^^^"+i);
	}
}
class Parent {
	public Parent(){
		System.out.println("--------befor---------");
		test();
		System.out.println("---------after--------");
	}
	
	public void test(){
		System.out.println("*******");
	}
	
}

运行的结果是:

--------befor---------
^^^^^^^^^^^^0
---------after--------
^^^^^^^^^^^^3

解释:从运行的结果可以大致看出对象产生的过程:在创建对象的时候发现该类有父类,那么先调用父类的构造方法,产生父类对象后才来调用子类的构造方法。大致产生对象的过程是这样的。但是我们看到父类构造方法里面有些不同,它在构造方法里面调用了自己的一个方法,而这个方法同时被子类重写了。从结果来看,在调用父类的构造方法的时候是实现了动态绑定的。父类构造方法调用的test方法是子类重写的方法,而不是父类的。这说明动态帮定深入到了继承的每个层次。但是我们看父类构造方法中调用test后i的值是0。为什么呢?那是因为在创建子类对象的时候,要给子类分配内存空间,分配给子类对象的空间在这个时候初始化为二进制的0,这个时候还没有调用父类的构造方法。接下来才调用父类的构造方法,然后接着调用子类的构造方法。所以我们看到的结果是:父类构造方法调用的时候i值是0,而这个0是二进制的0,而不是我们通常说的没有赋初值时候JVM赋的十进制的0。
分享到:
评论

相关推荐

    深入理解C++的动态绑定和静态绑定

    在C++编程语言中,动态绑定和静态绑定是两种关键的多态实现方式,它们对于理解和编写高效、灵活的代码至关重要。多态性允许我们通过一个共同的基类接口访问不同派生类的对象,从而提高了代码的重用性和可扩展性。 ...

    Java动态绑定和静态绑定.doc

    在Java编程语言中,动态绑定和静态绑定是两个重要的概念,它们涉及到方法调用和多态性。了解这两个概念对于深入理解面向对象编程至关重要。本文将详细探讨它们的区别,并通过实例来阐述它们的工作原理。 首先,让...

    dataGridView动态绑定数据下拉框

    本话题将深入探讨如何实现“dataGridView动态绑定数据下拉框”的功能,即在dataGridView的某一列展示一个动态生成的下拉框,其内容来源于数据库字段,并且能够与文件列名建立对应关系,从而实现数据的导入。...

    Java 静态绑定与动态绑定深入分析

    Java中的静态绑定与动态绑定是面向对象编程中的关键概念,它们决定了方法调用的方式和时机。静态绑定(也称为早期绑定或编译时绑定)和动态绑定(也称为晚期绑定或运行时绑定)是Java中多态性实现的基石。 **静态...

    C++动态绑定解密

    本文将深入探讨动态绑定的概念、原理及其在C++中的应用。 #### 二、动态绑定的重要性 当设计系统时,开发者通常面临以下挑战: 1. **接口与实现的分离**:开发者可能清楚所需的接口(即功能需求),但不确定最合适...

    动态绑定ASPxGridView

    本示例中,我们将深入探讨如何实现动态绑定ASPxGridView,以便根据用户的选择从不同的数据库中加载数据。 首先,`fywtest.aspx`是ASP.NET的页面文件,其中包含ASPxGridView控件的定义。在HTML部分,你可以看到ASPx...

    IP地址动态绑定!!!!!!!!!!!!!

    在IT行业中,IP地址动态绑定是一项重要的网络管理技术,它涉及到网络设备的自动化配置和网络资源的有效利用。这里我们将深入探讨这一主题,并结合HOHO游戏社区的实例进行讲解。 首先,IP地址(Internet Protocol ...

    wpf 动态绑定不在项目中的图片

    ### WPF动态绑定不在项目中的图片 在WPF(Windows Presentation Foundation)开发中,动态绑定不在项目中的图片是一项常见的需求,特别是在需要从数据库或其他外部来源加载图片时。本文将详细介绍如何实现这一功能...

    DevExpress中GridControl的属性设置及动态绑定数据和全选取消全选

    接下来,我们来谈谈如何动态绑定数据。动态绑定通常涉及以下步骤: 1. 加载数据:从数据库或其他数据源获取数据,可以使用ADO.NET、Entity Framework等工具。 2. 设置DataSource:将加载的数据赋值给GridControl的...

    RDLC 绑定动态列 源码

    本资源提供的是关于RDLC绑定动态列的源码,这对于开发需要根据数据源动态调整列数和列属性的报表来说,非常实用。 动态列绑定是报表设计中的一个重要特性,尤其在处理不确定数量或类型的数据字段时。在传统的RDLC...

    DevExpress的GridView动态绑定数据集,多线程动态修改UI自动刷新

    在本话题中,我们将深入探讨如何实现GridView的动态绑定数据集以及如何在多线程环境下安全地更新UI,同时监控运行状态。 首先,动态绑定数据集是GridView的一个关键特性,允许我们根据需要实时加载和显示数据。在C#...

    COM学习——动态绑定之引用计数

    动态绑定是指在运行时确定对象的方法调用,而不是在编译时。这使得COM对象可以灵活地适应不同的实现,增加了代码的可扩展性和可维护性。C++中,COM的动态绑定主要体现在接口的使用上,通过接口指针调用方法,而不是...

    cxgrid动态增加列及属性绑定

    下面我们将深入探讨如何在CXGrid中实现动态增加列以及属性绑定。 一、动态增加列 在CXGrid中,我们通常使用`TcxGridLevel`和`TcxGridColumn`对象来管理列。要动态增加列,首先确保已经有一个`TcxGrid`控件在界面上...

    DataGrid动态绑定使用说明,免费下载

    描述部分重申了标题的核心内容,即提供关于`DataGrid`动态绑定的使用说明。这意味着文档将详细解释如何配置和实施`DataGrid`的动态绑定功能,包括但不限于数据源的设置、事件处理、以及在不同状态(如编辑模式)下`...

    基于ReportViewer+C#实现的动态绑定RDLC 的数据报表程序代码

    本项目是基于ReportViewer控件和C#编程语言实现的动态绑定RDLC数据报表程序,让我们来深入探讨这个系统的实现原理及关键知识点。 1. **ReportViewer控件**:ReportViewer是Microsoft提供的一种用于创建、设计和查看...

    Cocos2d-js实现动态绑定CocostudioUI控件和事件

    在Cocos2d-js开发中,动态绑定CocostudioUI控件和事件是一个关键的环节,这使得开发者能够更加灵活地控制游戏或应用的用户界面。Cocos2d-js是一个基于JavaScript的2D游戏引擎,它允许开发者利用JavaScript语言进行...

    iPhone编程的多态、动态类型和动态绑定

    网新集团仿真实训中心的"iPhone编程的多态、动态类型和动态绑定"课程,很可能是为了帮助学员深入理解和掌握这些概念,通过实践案例来提升他们的iOS开发技能。官网insigmaedu.com可能提供了更多的学习资源和课程信息...

    flex datagrid分页 动态绑定数据源

    本篇文章将深入探讨“flex datagrid分页动态绑定数据源”的相关知识点。 首先,让我们理解Flex Datagrid的基本概念。Flex Datagrid是一个灵活的数据呈现控件,能够处理各种数据源,包括ArrayCollection、...

    4.(vue3.x+vite)style动态绑定的方式.rar

    Vue提供了多种方式来实现style的动态绑定,下面我们将深入探讨这些方法。 首先,我们可以通过`v-bind`指令来绑定CSS属性。例如,如果我们有一个`color`属性,可以在template中这样写: ```html ...

Global site tag (gtag.js) - Google Analytics