关于动态绑定的理解

小黑骂人马没大

小黑骂人马没大

2016-02-19 16:25

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的关于动态绑定的理解懂设计的网友们快点来了解吧!

  在子类和父类里面有同名函数的时候,如果生成一个子类的对象,并在子类的对象里面调用这个函数,那么到底会是调用的是谁的函数呢?例如

  

class Base{
int i=47;
int f(){
return g();
}
int g(){
return i;
}

class Dervied extends Base{
int i=27;
int g(){ file://override父类里面的方法
return i;
}
}
public class test {
public static void main (String[] args)
{
Derived d = new Derived(); //生成Derived的对象
System.out.println(d.f());
// d.f() === Derived.f(d);
}
}

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  d.f()等价于==对象d调用父类的f()函数,f()函数就会调用return g()这句话,这个时候是在调用谁的g()呢?

  这个时候需要动态绑定 Binding,所谓的动态绑定,通俗的就是指,对象在调用方法的时候能够自己判断改调用谁的方法是自己的方法还是父类的方法,到底怎样判断呢?我觉得不是很好的理解所以干脆也来个通俗的解释:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  即 就是调用当前对象的所在类的里面的方法:

  如果从当前子类Dervied生成了对象d, 那么以后只要是是调用g()的时候,都会是调用子类Derived里面的g()函数而不会去调用父类Base里面的g()函数我觉得这里就是Java具备多态性的关键

展开更多 50%)
分享

猜你喜欢

关于动态绑定的理解

编程语言 网络编程
关于动态绑定的理解

关于动态代理

编程语言 网络编程
关于动态代理

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

关于怀孕的7个错误理解

孕前
关于怀孕的7个错误理解

关于动态执行代码(js的Eval)

Web开发
关于动态执行代码(js的Eval)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

关于DIV CSS和XHTML CSS的理解

Web开发
关于DIV CSS和XHTML CSS的理解

关于胎教的四大错误理解

怀孕
关于胎教的四大错误理解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

初探ERP的数据库框架

初探ERP的数据库框架

[JAVA100例]011、按钮

[JAVA100例]011、按钮
下拉加载更多内容 ↓