Java 方法重载也称为静态多态性吗?
我只是java的新手 在下面的代码中,我在两个不同的类之间加载了print方法 基于运行时的对象,只会执行相应的print方法。如果我的理解是正确的,那么我们怎么能说方法重载被认为是静态态射呢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
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中没有重载,因此您实际上可以手动滚动动态调度。这让我意识到,你真的在问派遣问题。