Java中的方法分派规则

方法分派

  • 调用谁的、哪个方法
  • 针对方法重载的情况
  • 针对方法覆盖的情况

静态分派(编译期确定,根据调用者的声明类型和方法参数类型)

动态分派(运行时确定,依据调用者的实际类型分派)

  • 方法重写(重写父类方法)

Demo

import org.junit.Test;

public class DispatchTest {
    
    

    @Test
    public void test(){
    
    
        SuperClass superClass = new SubClass();
        printName(superClass);
    }

    //会执行该方法,重载,静态分派
    private void printName(SuperClass superClass){
    
    
        //getName被覆盖,动态分派,根据实际的类型
        System.out.println(superClass.getName());//sub
    }

    private void printName(SubClass subClass){
    
    
        System.out.println(subClass.getName());
    }

}

class SuperClass {
    
    
    public String getName() {
    
    
        return "super";
    }
}

class SubClass extends SuperClass {
    
    
    @Override
    public String getName() {
    
    
        return "sub";
    }
}

猜你喜欢

转载自blog.csdn.net/yu540135101/article/details/113793996