java静态分派

转载 2018年04月15日 21:12:35
/**
 * java静态分派
 * java编译器在overload时通过参数的静态类型而不是实际的类型作为片段的依据的,并且静态类型是编译期可知的。
 * 静态分派发送在编译阶段。
 * @author idea-pcfff
 *
 */
public class StaticDispatch {
    static abstract class Human{
        
    }
    static class Man extends Human{
        
    }
    static class Woman extends Human{
        
    }
    public void sayHello(Human h){
//        if(h instanceof Woman){
//            sayHello((Woman) h);
//        }
//        else if(h instanceof Man){
//            sayHello((Man) h);
//        }else{
            System.out.println("hello h");
        //}
    }
    public void sayHello(Man m){
        System.out.println("hello m");
    }
    public void sayHello(Woman w){
        System.out.println("hello w");
    }
    public static void main(String[] args) {
        Human man = new Man();
        Human woman = new Woman();
        StaticDispatch sd  = new StaticDispatch();
        
        sd.sayHello(man);
        // hello h
        sd.sayHello(woman);
        // hello h
    }

}

参考:《深入理解Java虚拟机 JVM高级特性与最佳实践》

Java静态分派与动态分派

Java方法调用原理,静态分派与动态分派,重载与重写的本质。
  • sunxianghuang
  • sunxianghuang
  • 2016-08-23 20:20:56
  • 3019

【深入Java虚拟机】之五:多态性实现机制——静态分派与动态分派

Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。这个特性给Java带来了更强大的动态扩展能力,使...
  • mmc_maodun
  • mmc_maodun
  • 2014-01-10 08:26:58
  • 12683

深入理解JVM之七:静态分派与动态分派

前言这里所谓的分派指的是在Java中对方法的调用。Java中有三大特性:封装、继承和多态。分派是多态性的体现,Java虚拟机底层提供了我们开发中“重写”和“重载”的底层实现。其中重载属于静态分派,而重...
  • u011116672
  • u011116672
  • 2015-11-28 19:53:51
  • 1513

Java中的静态单多分派与动态单分派

什么是单分派,什么是多分派呢???    先看定义:根据一个宗量的类型进行方法的选择称为单分派                   根据多于一个宗量的类型对方法的选择称为多分派 那么宗量又是...
  • p10010
  • p10010
  • 2016-01-04 15:27:20
  • 1705

Java方法重载与重写(静态分派与动态分派)

Java面向对象3个基本特征:继承、封装和多态;多态主要体现在重载和重写; 1、静态分派 静态分派与重载有关,虚拟机在重载时是通过参数的静态类型,而不是运行时的实际类型作为判定依据的;静态类型在编译期...
  • woliuyunyicai
  • woliuyunyicai
  • 2015-04-12 10:40:33
  • 1354

java--动态单分派,静态多分派

package com.xiuye.test; import java.io.Serializable; public class TestOverload { static abstract...
  • xiuye2015
  • xiuye2015
  • 2016-08-31 10:21:03
  • 502

Java静态多分配,动态单分配

http://blog.csdn.net/cclive1601/article/details/8050330 http://my.oschina.net/tdd/blog/341258 ...
  • u010850285
  • u010850285
  • 2015-03-12 10:42:48
  • 1087

java方法调用之单分派与多分派(二)

上篇博文java方法调用之重载、重写的调用原理(一) 讨论了重写与重载的实现原理,这篇博文讨论下单分派与多分派。单分派、多分派方法的接收者和方法的参数统称为方法的宗量。 根据分派基于宗量多少(接收者是...
  • fan2012huan
  • fan2012huan
  • 2016-03-29 17:00:14
  • 2375

Java的静态分派和动态分派

静态分派:Java的静态分派只涉及到方法的重载,也就是我们实际调用的是哪个重载方法实际上是在编译期间确定的。 下面来举例说明一下: // 水果接口 interface Fruit{} // 苹果实...
  • qq_30698633
  • qq_30698633
  • 2017-08-08 15:42:50
  • 85

深入理解Jvm--Java静态分配和动态分配完全解析

jvm中绑定Binding的概念绑定是针对类型而言的,指的是类型确定的过程,通常发生在访问对象成员或者方法调用的过程中。当我们谈论方法或属性的访问时动态绑定还是静态绑定时,实际上指的是方法的接收者和属...
  • u013309870
  • u013309870
  • 2017-06-10 17:00:12
  • 619
收藏助手
不良信息举报
您举报文章:java静态分派
举报原因:
原因补充:

(最多只允许输入30个字)