当前位置: 首页 > 面试题库 >

Java中的运行时多态示例?

曾晨
2023-03-14
问题内容

运行时多态与静态多态有何不同?

这可以作为运行时多态的示例吗?

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 ++中的虚函数用于创建基类指针和任何派生类的调用方法的列表,甚至不知道派生类对象的种类。虚函数在运行时解析得较晚。 虚函数的主要用途是实现运行时多态。运行时多态只能通过基类类型的指针(或引用)来实现。同样,基类指针可以指向基类的对象以及派生类的对象。在上面的代码中,基类指