Java的动态绑定又称为运行时绑定。意思就是说,程序会在运行的时候自动选择调用哪儿个方法。
public class Son extends Father Son son = new Son(); son.method();
1、首先,编译器根据对象的声明类型和方法名,搜索相应类(Son)及其父类(Father)的“方法表”,找出所有访问属性为public的method方法。
可能存在多个方法名为method的方法,只是参数类型或数量不同。
2、然后,根据方法的“签名”找出完全匹配的方法。
方法的名称和参数列表称为方法的签名。
在Java SE 5.0 以前的版本中,覆盖父类的方法时,要求返回类型必须是一样的。现在子类覆盖父类的方法时,允许其返回类型定义为原始类型的子类型。
public Father getFather(){...} //父类中的方法 public Son getFather(){...} //子类覆盖父类中的getFather()方法
3、如果是private、static、final 方法或者是构造器,则编译器明确地知道要调用哪儿个方法,这种调用方式成为“静态调用”。
4、调用方法。
如果子类Son中定义了 method() 的方法,则直接调用子类中的相应方法;如果子类Son中没有定义相应的方法,则到其父类中寻找method()方法。
二、Demo
1、子类重写父类中的方法,调用子类中的方法
public class Father{ public void method(){ System.out.println("父类方法:"+this.getClass()); } } public class Son extends Father{ public void method(){ System.out.println("子类方法"+this.getClass()); } public static void main(String[] args){ Father instance = new Son(); instance.method(); } } //结果:子类方法:class Son
2、子类没有重写父类中的方法,所以到父类中寻找相应的方法
public class Father{ public void method(){ System.out.println("父类方法:"+this.getClass()); } } public class Son extends Father{ public static void main(String[] args){ Father instance = new Son(); instance.method(); } } //结果:父类方法:class Son
三、动态绑定只是针对对象的方法,对于属性无效。因为属性不能被重写。
public class Father{ public String name = "父亲属性"; } public class Son extends Father{ public String name = "孩子属性"; public static void main(String[] args){ Father instance = new Son(); System.out.println(instance.name); } } //结果:父亲属性
相关推荐
这篇文章我们将揭露JVM方法调用的静态(static binding) 和动态绑定机制(auto binding) 。 静态绑定机制 //被调用的类 package hr.test; class Father{ public static void f1(){ System.out.println(...
动态绑定的内部机制涉及到对象的内部表示和方法表。在Java对象模型中,每个对象都包含实例变量和指向类方法区的指针,方法区存储着类的方法数据,包括方法的字节码。方法表是一个指向方法区中方法指针的数组,其中...
Java中存在两种类型的绑定机制:静态绑定和动态绑定。 静态绑定是指在程序执行以前已经被绑定(即在编译过程中就已经知道这个方法到底是哪个类中的方法)。在Java中,final、static、private修饰的方法和构造方法是...
了解这些绑定机制有助于我们编写更加高效、灵活的代码。在设计类和对象时,合理运用静态绑定和动态绑定可以优化性能,提高代码的可维护性。比如,如果我们需要确保方法的调用总是指向同一实现,可以选择静态绑定;而...
综上所述,合理利用Oracle的绑定变量机制是Java开发者优化数据库性能的重要手段之一。它不仅可以避免不必要的硬解析,减轻CPU和闩锁资源的压力,还能优化共享池的管理,提升系统的并发处理能力和响应速度。在实际...
总之,Java中的动态绑定和方法重载是实现面向对象编程的重要机制,它们共同为开发者提供了更强大、更灵活的代码设计工具。理解并熟练运用这两个概念,将有助于编写出更加高效、可维护的Java代码。
在Java编程语言中,静态绑定和动态绑定是两种不同的方法调用机制,它们与面向对象编程密切相关。这两种绑定方式决定了程序在运行时如何选择和执行特定的方法。 静态绑定(早期绑定),也称为编译时绑定,是指在程序...
### Java的映射机制深入解析 Java的映射机制是其框架设计与应用开发中的核心概念之一,尤其...无论是数据绑定、异常处理还是业务流程控制,映射机制都发挥着不可或缺的作用,是每个Java开发者应该掌握的关键技术之一。
- **多态**:一个接口可以有多种不同的实现,是Java动态绑定机制的体现。 4. **异常处理** - **异常**:Java中的错误和异常是通过异常类来表示的,异常处理机制使得程序更加健壮。 - **try-catch-finally**:...
在Java编程中,动态绑定和静态绑定是两种不同的方法调用机制,它们分别适用于不同的场景。动态绑定,也称为晚期绑定或多态性,是指在程序运行时根据对象的实际类型来决定调用哪个方法。静态绑定,又称为早期绑定,是...
总的来说,Java的动态绑定机制通过对象内存模型中的方法表和运行时类型信息,实现了在运行时根据对象实际类型选择相应方法的调用。这种机制增强了Java的多态性,提高了代码的灵活性和可维护性,是Java语言设计的关键...
Java事件处理机制是Java编程中一个重要的组成部分,它主要用于实现用户界面(UI)与应用程序逻辑之间的交互。在Java中,事件处理主要涉及到事件源、事件和事件监听器。本示例"java事件处理机制Demo"将深入探讨Java的...
随着面向对象编程的发展,动态类型和动态绑定的概念逐渐成熟,这为Java反射机制的出现奠定了基础。Java反射机制在JDK 1.1版本中就已经引入,但在JDK 1.5之后得到了进一步增强和完善,增加了泛型支持等功能,使得反射...
描述中提到“绑定游戏柄口”,这通常是指通过Java程序与游戏控制器进行通信,允许用户通过游戏手柄进行操作,同时这些操作可以通过大漠插件在后台执行。这意味着用户可以隐藏或最小化应用程序,而程序仍然可以继续...
它是Java EE标准的一部分,提供了一种机制来将Java对象与XML文档相互转换。使用JAXB,可以通过简单的API调用来序列化和反序列化Java对象为XML文档,反之亦然。 **特点:** - **简单易用**:只需在Java类上添加一些...
5. **数据绑定**:可以将树结构与数据库或其他数据源绑定,动态加载数据,实现数据的增删查改。 6. **API支持**:dhtmlxtree提供了丰富的JavaScript API,用于控制树的各个方面,如获取选中的节点、添加新节点、...
通过这些方法,开发者可以动态地获取类的信息,进而进行动态绑定、实例化对象、调用方法等高级操作。 ### 总结 Java中的反射机制为开发者提供了一种强大而灵活的方式来处理类信息。通过反射,可以实现诸如动态代理...
总的来说,静态绑定和动态绑定都是Java中实现多态和灵活代码的重要机制。静态绑定在编译阶段就决定了方法调用,基于方法签名进行选择;动态绑定则在运行时根据对象的实际类型确定方法实现,实现了“面向接口编程”的...
反射机制的核心在于能够在运行时动态地获取类的信息并进行操作,这为Java提供了高度的灵活性和动态性。 1. **Java反射机制的基本功能** - 获取类信息:通过`Class`类的`forName()`方法,可以得到运行时的类信息。 ...