• 静态类型与函数重载


    静态类型与函数重载


    有以下代码:

    public class Main {
        public static class Human {}
    
        public static class Man extends Human {}
    
        public static class Woman extends Human {}
    
        public static void sayHello(Human human) { System.out.println("human"); }
    
        public static void sayHello(Man man) { System.out.println("man"); }
    
        public static void sayHello(Woman woman) { System.out.println("woman"); }
    
        public static void main(String[] args) {
            Human human;
    
            human = new Human();
            Main.sayHello(human);
    
            human = new Man();
            Main.sayHello(human);
    
            human = new Woman();
            Main.sayHello(human);
        }
    }
    

    上述代码执行完毕后控制台的输出结果为:

    human
    human
    human
    

    静态类型、实际类型

    Human human = new Woman();
    

    上面代码中的“Human”被称为变量human的静态类型(Static Type),或者称作外观类型(Apparent Type),上面代码中的“Woman”被称为变量human的实际类型(Actual Type)

    两种类型的区别

    静态类型和实际类型在程序中可以发生变化,但是静态类型的变化仅仅在使用时发生,变量本身的静态类型不会被改变,并且静态类型是编译期可知的;而实际类型变化的结果在运行期才能确定,编译器在编译程序的时候并不知道一个对象的实际类型是什么

    public static void main(String[] args) {
        // 静态类型:编译期可知
        Human human;
        // 实际类型:运行期可知
        human = new Human();
        Main.sayHello(human);
    
        // 实际类型变化
        human = new Man();
        // 静态类型变化
        Main.sayHello((Man) human);
    
        // 实际类型变化
        human = new Woman();
        // 静态类型变化
        Main.sayHello((Woman) human);
    }
    
    human
    man
    woman
    

    静态类型与方法重载

    1. 重载方法以参数列表(参数个数、参数类型)为区分依据。
    2. 编译期仅仅可知变量的静态类型,无法确定变量的实际类型。

    综上,在编译阶段编译器根据参数的静态类型来决定最终执行方法的哪个重载版本

  • 相关阅读:
    liunx上升级python2至python3
    python之logging日志
    c# 脚本引擎 脚本编辑器
    设置 BCompare 打开文件时的默认字符编码
    Python调用动态库,获取BSTR字符串
    服务器CPU100%的排查日志
    栈(Stack)
    搭建个人的github.io博客
    django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (found 3.7.17)
    virtualenv中使用python的虚拟环境
  • 原文地址:https://www.cnblogs.com/XiaoZhengYu/p/13278628.html
Copyright © 2020-2023  润新知