加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

【Simple Java】Java编译器如何生成重载和覆盖技巧代码

发布时间:2021-11-18 19:19:00 所属栏目:教程 来源:互联网
导读:下面是一个很简单的例子,关于Java中的多态:方法重载和方法覆盖; 多态指的是方法在不同的时刻表现出不同的形式;在编译期间,这被叫做方法重载;方法重载允许相关的方法被同一个方法名字调用,这有时候被叫做ad-hoc polymorphism; package simplejava; cla
下面是一个很简单的例子,关于Java中的多态:方法重载和方法覆盖;
 
多态指的是方法在不同的时刻表现出不同的形式;在编译期间,这被叫做方法重载;方法重载允许相关的方法被同一个方法名字调用,这有时候被叫做ad-hoc polymorphism;
 
package simplejava;
 
class A {
    public void M(int i) {
        System.out.println("int");
    }
 
    public void M(String s) {
        // this is an overloading method
        System.out.println("string");
    }
}
 
class B extends A {
    public void M(int i) {
        // this is overriding method
        System.out.println("overriden int");
    }
}
 
public class Q13 {
 
    public static void main(String[] args) {
        A a = new A();
        a.M(1);
        a.M("abc");
        A b = new B();
        b.M(1234);
    }
 
}
 
那么对于编译器来说,如何生成方法代码以便能被正确调用呢?
 
静态重载的实现并不难,当处理重载方法声明的时候,将他们绑定到不同的实现,在类型检查的时候,编译器分析参数类型来决定哪个方法被调用;
 
动态重载允许在运行期间根据实际参数类型来选择不同的方法实现,这是动态分发(dynamic dispatch)的一种形式;
 
动态分发(dynamic dispatch)同样可以用于实现方法覆盖,被覆盖的方法的调用由运行期间实际对象的类型来决定;

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读