美文网首页
Java中的静态分派和动态分派

Java中的静态分派和动态分派

作者: maxwellyue | 来源:发表于2017-10-30 19:58 被阅读35次

静态分派

有如下代码:

public abstract class Human {}
public class Man extends Human {}
public class Woman extends Human {}

在客户端定义了几个方法并调用如下:

public class Client {

    public static void main(String[] args){
        Human man = new Man();
        Human woman = new Woman();
        Client client = new Client();
        client.sayHello(man);
        client.sayHello(woman);
    }

    public void sayHello(Human human){
        System.out.println("hello, human");
    }

    public void sayHello(Man man){
        System.out.println("hello, man");
    }

    public void sayHello(Woman woman){
        System.out.println("hello, woman");
    }

}

输入结果为:

hello, human
hello, human

静态分派:对应Java语言的重载(Overload)概念,根据参数静态类型选择对应方法。


动态分派

有如下代码:

public abstract class Human {
    abstract void sayHello();
}

public class Man extends Human {

    @Override
    void sayHello() {
        System.out.println("man say hello");
    }
}

public class Woman extends Human {

    @Override
    void sayHello() {
        System.out.println("woman say hello");
    }
}

在客户端调用:

public class Client {

    public static void main(String[] args){
        Human man = new Man();
        Human woman = new Woman();
        man.sayHello();
        woman.sayHello();
    }
}

输入结果为:

man say hello
woman say hello

动态分派:对应Java语言的重写(Override)概念,根据参数实际类型选择对应方法

相关文章

  • 多态->分派

    摘抄深入理解java虚拟机目标 分派包括: 静态分派与动态分派两种类型, 静态分派的使用场景为重载, 动态分派使用...

  • Java静态分派、动态分派、双重分派

    动态分派和静态分派机制是java多态的实现原理。 静态分派(方法重载) 静态分派机制最典型的代码: 这段代码执行完...

  • Java中的静态分派和动态分派

    静态分派 有如下代码: 在客户端定义了几个方法并调用如下: 输入结果为: 静态分派:对应Java语言的重载(Ove...

  • Java 分派

    静态分派 重载属于静态分派 靠静态类型来判断 如上代码中输出为: 动态分派 重写属于动态分派 靠实际类型来判断 如...

  • java虚拟机之方法调用(下)——单分派与多分派

    前言 上一篇讲解了静态分派和动态分派,还不清楚的同学可以先看看:java虚拟机之方法调用(上)——静态分派与动态分...

  • Java中的静态分派与动态分派

    本文是《深入理解Java虚拟机》8.3.2节的读书笔记,理解有误的地方,欢迎指正 首先是两个概念: 静态类型,即是...

  • Java 静态多分派&动态单分派

    分派发生在编译期和运行期,编译期的分派为静态分派,运行期的为动态分派。 编译期是根据对象声明的类型来选择方法,运行...

  • Java方法分派

    静态分派 - 方法重载分派编译期确定根据调用者的声明类型和方法参数类型分派 动态分派 - 方法重写分派运行时确定根...

  • 方法调用的编译和运行:static dispatch和dynam

    背景 静态分派(static dispatch)和动态分派(dynamic dispatch)是用来处理编程语言语...

  • java基础知识,字节码执行引擎

    知识要点: 函数解析 静态分派 动态分派 字节码 函数解析 虚拟机方法字节码 在Java语言中符合“编译期可知,运...

网友评论

      本文标题:Java中的静态分派和动态分派

      本文链接:https://www.haomeiwen.com/subject/gvympxtx.html