zoukankan      html  css  js  c++  java
  • Java 方法分派

    1. 什么是方法分派?

      就是确定调用谁的,哪个方法。

      在Java中子类覆写父类方法的方法都是虚方法,使用final、private修饰的方法不是虚方法。

    2. 方法分派情况分析

      在Java中子类继承父类并覆写父类方法,在调用时取决于运行时的实际类型

    // 父类
    public class SuperClass {
    
        public String getName() {
            return "super";
        }
    
    }
    
    // 子类
    public class SubClass extends SuperClass {
    
        @Override
        public String getName() {
            return "sub";
        }
    
    }
    
    // 实现
    public class LearnJava {
    
        public static void main(String[] args) {
            SuperClass superClass = new SubClass();
            printClass(superClass);
        }
    
        public static void printClass(SuperClass superClass) {
            System.out.println("super class: " + superClass.getName());
        }
    
        public static void printClass(SubClass subClass) {
            System.out.println("sub class: " + subClass.getName());
        }
    
    }

      输出:

    super class: sub

      调用过程是怎么样的?

      在编译时期需要确定方法的调用,在main()函数中在编译时确认调用printClass(SuperClass superClass)方法,在printClass(SuperClass superClass)方法中调用哪个getName()方法,是父类的还是子类的,取决于运行时实际类型。所以,在main中调用printClass(SuperClass superClass),在printClass(SuperClass superClass)方法中superClass实际类型是SubClass,所以调用SubClass类实例的getName()方法。

    3. 方法分派总结 

      1. 静态分派 -- 方法重载分派

        1. 编译时;

        2. 依据调用者的声明类型与方法参数类型;

      2. 动态分派 -- 方法覆写分派

        1. 运行时;

        2. 依据调用者的实际类型;

  • 相关阅读:
    DVWA SQL注入源代码审计
    sqlmap
    sql注入原理+mysql相关知识点
    SQL报错常见的注入姿势
    故障处理流程和规范
    Kafka源码工程examples项目配置log4j
    如何快速安装kafka-manager
    PHP8 新特征
    PHP-面试总结——高并发篇
    Docker 搭建多容器组合服务 (nginx + PHP)
  • 原文地址:https://www.cnblogs.com/naray/p/13177262.html
Copyright © 2011-2022 走看看