首页 > 解决方案 > Java方法重载是静态绑定吗?

问题描述

我是 Java 新手,对静态绑定感到困惑。一些站点解释方法重载是静态绑定。我的理解是只有StaticFinalPrivate方法是静态绑定的。在下面的示例中,我认为打印方法(超类中的两个重载打印方法)是动态绑定而不是静态绑定,因为子类打印方法可以在运行时覆盖超类打印方法。只有静态最终私有方法是静态绑定的,其余的(公共的、受保护的……)是动态绑定的吗?请纠正我。

import java.util.Collection;
import java.util.HashSet;

public class Binding
    {
    public static void main(String[] args)
        {
        Collection<String> col = new HashSet<>();
        col.add("hello");
        SuperClass sdObj1 = new SuperClass();
        sdObj1.print(col);
        SuperClass sdObj2 = new SubClass();
        sdObj2.print(col);
        }
    }

class SuperClass
    {
    void print(Collection<String> col)
        {
        System.out.println("SuperClass1");
        }

    void print(HashSet<String> hs)
        {
        System.out.println("SuperClass2");
        }
    }

class SubClass extends SuperClass
    {
    void print(Collection<String> col)
        {
        System.out.println("SubClass");
        }
    }

标签: javabindingstatic

解决方案


推荐阅读