动态绑定机制是如何实现对象与行为关联的?

2026-05-22 10:103阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计490个文字,预计阅读时间需要2分钟。

动态绑定机制是如何实现对象与行为关联的?

动态绑定机制 + Java的动态绑定机制:+ 当调用对象方法时,+ 该方法会和该对象的内存地址/运行类型绑定;+ 当调用对象属性时,+ 没有动态绑定机制,+ 在哪个类中声明,就在哪个类中绑定。

动态绑定机制

java的动态绑定机制:

动态绑定机制是如何实现对象与行为关联的?

  1. 当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
  2. 当调用对象属性时,没有动态绑定机制,在哪个类中声明就用哪个类中的属性;

代码示例:

package com.hspedu.poly_.dynamic_; /** * @author gaoqinghui * @date 2022/4/15 15:31 * java的动态绑定机制 * 1.当调用对象方法时,该方法会和该对象的内存地址/运行类型绑定 * 2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用 */ public class DynamicBinding { public static void main(String[] args) { //A是a的编译类型,B是a的运行类型 A a = new B(); //解释:当调用a.sum()时,我们的运行内存是B,首先会去子类中寻找看是否有sum方法,这时我们把子类中的sum方法注释了,根据继承关系,会继续向上寻找父类看是否有sum这个方法,这时父类A中有sum这个方法,调用这个方法后,返回的时geti() + 10,根据动态绑定机制,这时会根据我们a的运行内存去寻找这个geti()方法,a的运行类型时B,就去B中找是否有geti(),这时找到,返回i,因为返回i是属性,属性没有动态绑定机制,返回的就是就是B类中定义的i,也就是20,然后返回父类,结果为30; System.out.println(a.sum()); System.out.println(a.sum1()); } } class A { public int i = 10; public int sum(){ return geti() + 10; } public int sum1(){ return i + 10; } public int geti(){ return i; } } class B extends A { //子类 public int i = 20; // public int sum(){ // return i + 20; // } public int geti(){ return i; } // public int sum1(){ // return i + 10; // } }

标签:

本文共计490个文字,预计阅读时间需要2分钟。

动态绑定机制是如何实现对象与行为关联的?

动态绑定机制 + Java的动态绑定机制:+ 当调用对象方法时,+ 该方法会和该对象的内存地址/运行类型绑定;+ 当调用对象属性时,+ 没有动态绑定机制,+ 在哪个类中声明,就在哪个类中绑定。

动态绑定机制

java的动态绑定机制:

动态绑定机制是如何实现对象与行为关联的?

  1. 当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
  2. 当调用对象属性时,没有动态绑定机制,在哪个类中声明就用哪个类中的属性;

代码示例:

package com.hspedu.poly_.dynamic_; /** * @author gaoqinghui * @date 2022/4/15 15:31 * java的动态绑定机制 * 1.当调用对象方法时,该方法会和该对象的内存地址/运行类型绑定 * 2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用 */ public class DynamicBinding { public static void main(String[] args) { //A是a的编译类型,B是a的运行类型 A a = new B(); //解释:当调用a.sum()时,我们的运行内存是B,首先会去子类中寻找看是否有sum方法,这时我们把子类中的sum方法注释了,根据继承关系,会继续向上寻找父类看是否有sum这个方法,这时父类A中有sum这个方法,调用这个方法后,返回的时geti() + 10,根据动态绑定机制,这时会根据我们a的运行内存去寻找这个geti()方法,a的运行类型时B,就去B中找是否有geti(),这时找到,返回i,因为返回i是属性,属性没有动态绑定机制,返回的就是就是B类中定义的i,也就是20,然后返回父类,结果为30; System.out.println(a.sum()); System.out.println(a.sum1()); } } class A { public int i = 10; public int sum(){ return geti() + 10; } public int sum1(){ return i + 10; } public int geti(){ return i; } } class B extends A { //子类 public int i = 20; // public int sum(){ // return i + 20; // } public int geti(){ return i; } // public int sum1(){ // return i + 10; // } }

标签: