运行时多态与静态多态有何不同?
这可以作为运行时多态的示例吗?
public class X
{
public void methodA() // Base class method
{
System.out.println ("hello, I'm methodA of class X");
}
}
public class Y extends X
{
public void methodA() // Derived Class method
{
System.out.println ("hello, I'm methodA of class Y");
}
}
public class Z
{
public static void main (String args []) {
X obj1 = new X(); // Reference and object X
X obj2 = new Y(); // X reference but Y object
obj1.methodA();
obj2.methodA();
}
}
代码是从这里挑选的
是的,这是Runtime polymorphism
在Java中
在中static polymorphism
,编译器本身确定应调用的方法。Method overloading
是静态多态性的一个例子。
在中runtime polymorphism
,编译器无法在编译时确定方法。Method overriding
(如您的示例)是的示例runtime polymorphism
。因为在Runtime polymorphism
(如您的示例中),methodA()
类X(base class)
和中的签名相似Y(child class)
。因此,编译器无法在编译时确定应执行的方法。仅在对象创建(这是一个运行时过程)之后,运行时环境才能了解要调用的确切方法。
这是因为,在这种情况下,obj1.methodA()
呼叫methodA()
在Class X
因为obj1
为创建的对象的参考变量class X
AND obj2.methodA()
调用methodA()
,Class Y
因为它obj2
是为以下对象创建的对象的参考变量class Y
这可以是运行时多态性的一个例子吗? 代码已从这里摘取
本文向大家介绍在Java中使用运行时多态,包括了在Java中使用运行时多态的使用技巧和注意事项,需要的朋友参考一下 使用多态性的概念,可以以多种方式执行单个动作。可以通过方法重写来执行运行时多态。在编译时解析此方法中的重写方法。 给出了一个演示Java运行时多态性的程序,如下所示: 示例 输出结果
本文向大家介绍Java中的动态方法分派或运行时多态,包括了Java中的动态方法分派或运行时多态的使用技巧和注意事项,需要的朋友参考一下 Java中的运行时多态性是通过方法覆盖实现的,方法覆盖是子类覆盖其父类中的方法。重写的方法本质上隐藏在父类中,除非子类在重写的方法中使用super关键字,否则不会调用该方法。此方法调用解析在运行时发生,称为动态方法分派机制。 示例 让我们来看一个例子。 这将产生以
本文向大家介绍什么是C#中的运行时多态?,包括了什么是C#中的运行时多态?的使用技巧和注意事项,需要的朋友参考一下 运行时多态性具有方法覆盖,也称为动态绑定或后期绑定。它由抽象类和虚函数实现。 抽象类 抽象类包含抽象方法,这些方法由派生类实现。 让我们看一个实现运行时多态性的抽象类的示例- 示例 示例 虚函数 当您在类中定义了要在继承的类中实现的函数时,可以使用虚函数。虚拟函数可以在不同的继承类中
本文向大家介绍编译时多态和运行时多态之间的区别,包括了编译时多态和运行时多态之间的区别的使用技巧和注意事项,需要的朋友参考一下 多态性是最重要的OOP概念之一。它是一个概念,通过它我们可以以多种方式执行单个任务。多态有两种类型,一种是编译时多态,另一种是运行时多态。 方法重载是编译时多态的示例,方法重载是运行时多态的示例。 序号 键 编译时多态 运行时多态 1个 基本的 R un time多态性,
本文向大家介绍C ++中的虚函数和运行时多态,包括了C ++中的虚函数和运行时多态的使用技巧和注意事项,需要的朋友参考一下 C ++中的虚函数用于创建基类指针和任何派生类的调用方法的列表,甚至不知道派生类对象的种类。虚函数在运行时解析得较晚。 虚函数的主要用途是实现运行时多态。运行时多态只能通过基类类型的指针(或引用)来实现。同样,基类指针可以指向基类的对象以及派生类的对象。在上面的代码中,基类指