zoukankan      html  css  js  c++  java
  • java基础入门-动态绑定-调用方法的过程

    先上代码


    package com.ray.testobject;
    
    /**
     * 调用方法的过程
     * 
     * @author ray
     * @since 2015-05-01
     *
     */
    public class Person {
    	public void say() {
    		System.out.println("i am a person");
    	}
    
    	public void say(int age) {
    		System.out.println("i am " + age);
    	}
    
    	public void say(String name) {
    		System.out.println("my name is " + name);
    	}
    
    	public static void main(String[] args) {
    		Person person = new Person();
    		person.say("jack");
    	}
    }
    



    输出:

    my name is jack





    过程如下:

    1.先找到person这个对象变量所对应的变量,也就是找到了Person这个类实例出来的对象

    2.再在Person这个类所生成的对象里面,查找想要的方法签名

    方法签名=方法名称+参数类型

    注意:这里没有涉及返回类型

    3.对于调用person.say(”jack“)来说,编译器先会挑选say(String),而不是say(int)或者say()

       由于java里面允许类型转换,所以如果找不到,他会相应的往他的父类去找,如果没有找到,则返回异常

       其实这里面的查找过程非常复杂,而且开销很大,所以jvm会编制一张方法表(method table),然后jvm

       直接找这个表即可

    4.找到想要的方法,调用即可


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    6. 数值的拓展
    5. 正则表达式的拓展
    4. 字符串的拓展
    工具篇-NotePad++/JSON格式化
    webpack3.x 学习笔记
    Javascript中的 this
    npm的使用方式
    正则表达式基础
    设计模式之观察者模式
    javascript 原型链, 面向对象
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4774577.html
Copyright © 2011-2022 走看看