java - Java方法重载是静态绑定吗?
问题描述
我是 Java 新手,对静态绑定感到困惑。一些站点解释方法重载是静态绑定。我的理解是只有Static、Final和Private方法是静态绑定的。在下面的示例中,我认为打印方法(超类中的两个重载打印方法)是动态绑定而不是静态绑定,因为子类打印方法可以在运行时覆盖超类打印方法。只有静态、最终和私有方法是静态绑定的,其余的(公共的、受保护的……)是动态绑定的吗?请纠正我。
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");
}
}
解决方案
推荐阅读
- reactjs - 开玩笑的期望语句不会等待承诺得到解决
- strapi - 如何在strapi中使用根路由(/)作为/admin
- google-sheets - 从 vlookup 检查 Google 表格中的文本而不破坏公式、文本换行或将列宽更改为“适合数据”?
- javafx - 结束时如何重置 JavaFX 媒体播放器?
- java - 导航 kotlin java 后,片段 recyclerview 消失
- matlab - 如何在matlab中向等高线图添加约束
- json - 是否可以同时使用 Spring Boot 应用程序来控制网站和作为 API?
- windows - Windows Server Web Application Load Balancer - 如何检查它是使用粘性会话还是循环?
- c++ - 使用 void* 正确地将对象传递给 pthread_create()
- javascript - Javascript a = b 语句设置 b 值?