2019.09.27 随笔(方法调用)

Posted njuptzheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019.09.27 随笔(方法调用)相关的知识,希望对你有一定的参考价值。

  1. 编译器查看对象的声明类型和方法名。

       假设调用的是x.f(param),x为C类隐式参数对象。编译器会一一列举C类中所有名为f的方法和其超类中访问属性为public且名为f的方法。(超类的私有方法不可访问)
public void raiseSalary(double byPercent) {    
    double raise = salary * byPercent/100;    
    salary += raise;
}

其中的this.salary为隐式参数,即出现在方法名前的类对象。byPercent为显示参数。很明显,显式参数是明显的列在方法中的,隐式参数没有出现在方法中。

  1. 编译器将查看调用方法时提供的参数类型。

? 如果在所有名为f的方法中存在一个方法的参数类型与调用方法提供的实参类型匹配,就选择这个方法,这个过程称为重载解析。若调用x.f("Hello"),则编译器会挑选f(String)。

  1. 静态绑定:如果是private方法、static方法、final方法或者构造器。那么编译器将可以准确的知道应该调用那个方法,我们将这种调用方式称为静态绑定。

    动态绑定:调用的方法依赖于隐式参数的实际类型,并且在运行时实现调用那个方法,我们称这种调用方式为动态绑定。

  2. 当程序运行,并采用动态绑定调用方法时,虚拟机一定调用与x所引用对象的实际类型最合适那个类的方法,假设x的实际类型是D,它是Cr的子类,如果D类定义了方法f(String),就直接调用它,否则将在D类的超类Father中寻找f(String),依次类推。即从子类到父类进行搜索。

以上是关于2019.09.27 随笔(方法调用)的主要内容,如果未能解决你的问题,请参考以下文章

2018-7-6-随笔-析构函数

工作随笔——spring异步处理@Async使用笔记

根据父活动在片段中调用不同的方法

活动到片段方法调用带有进度条的线程

理解片段事务期间片段的生命周期方法调用

从片段调用活动方法