Java 方法重载也称为静态多态性吗?

Java 方法重载也称为静态多态性吗?,java,Java,我只是java的新手 在下面的代码中,我在两个不同的类之间加载了print方法 基于运行时的对象,只会执行相应的print方法。如果我的理解是正确的,那么我们怎么能说方法重载被认为是静态态射呢 class Parent { private int arg; public void print(int arg) { this.arg=arg; System.out.println(arg+"printed"); } } class C

我只是java的新手 在下面的代码中,我在两个不同的类之间加载了print方法

基于运行时的对象,只会执行相应的print方法。如果我的理解是正确的,那么我们怎么能说方法重载被认为是静态态射呢

class Parent
{
    private int arg;
    public void print(int arg)
    {
        this.arg=arg;
        System.out.println(arg+"printed");
    }
}
class Child extends Parent{

    private String arg;
    public void print(String arg)
    {
        this.arg=arg;
        System.out.println(arg+"printed");
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Parent p1=new Parent();
        Child ch=new Child();
        p1.print(1);
        ch.print("String");
    }

}

请澄清我的问题。请提前感谢

尝试阅读此文章,可能会消除您对多态性工作原理的疑虑

试着读一下这篇文章,也许可以消除你对多态性工作原理的疑虑

是的,这是编译时(静态)多态性-假设您可以编写如下代码:

Child ch=new Child();
ch.print(2015);
ch.print("String");
是的,这是编译时(静态)多态性-假设您可以编写如下代码:

Child ch=new Child();
ch.print(2015);
ch.print("String");

基于运行时的对象-否。Java在编译时绑定。由于调用哪个特定方法是在编译时决定的,所以所有多态性都是“静态”的。只有调用该方法的
发生了更改。@所有多态性都是“静态的”。这听起来有点不正确。你能详细说明一下吗?@ChetanKinger我想说的是,方法是在编译时绑定的,因此是“静态的”(用OP的术语来说)。动态的是调用相同方法的类。不过你说得对-这不是我写过的最清楚的评论。你所做的与将两个
print()
实现放在同一个类中没有什么不同。至少在爪哇岛。JS或pythonland中没有重载,因此您实际上可以手动滚动动态调度。这让我意识到,您实际上是在询问分派。基于运行时的对象-不,Java在编译时绑定。由于调用哪个特定方法是在编译时决定的,所以所有多态性都是“静态”的。只有调用该方法的
发生了更改。@所有多态性都是“静态的”。这听起来有点不正确。你能详细说明一下吗?@ChetanKinger我想说的是,方法是在编译时绑定的,因此是“静态的”(用OP的术语来说)。动态的是调用相同方法的类。不过你说得对-这不是我写过的最清楚的评论。你所做的与将两个
print()
实现放在同一个类中没有什么不同。至少在爪哇岛。JS或pythonland中没有重载,因此您实际上可以手动滚动动态调度。这让我意识到,你真的在问派遣问题。