java - java中动态多态性的实时示例是什么

标签 java dynamic polymorphism

java中动态多态的实时例子是什么?

面试时我被很多地方问过这个问题 但力得到了真正的答案。代码:

class A {
    public void m1() {}
}

class B extends A {
    public void m1() {}
}

class manage {
    A a1 = new A();
    B b1 = new B();
    A a2 = new B();

    //when i will call A's m1 it will call m1 of A
    a1.m1();

    //when i will call B's m1 it will call  m1 of B
    b1.m1();

    //when i will call B's m1
    a2.m1();

}

通过查看上面的代码,我可以说它的对象将被调用,那么为什么它的运行时多态性

任何人都可以帮助实时正确的运行时/动态多态性示例吗??

最佳答案

让我们稍微更改一下您的代码示例。我们没有提供定义要测试的对象的测试类,而是只提供带有一些参数的方法:

public void testCalls(A a1, A b1, A b2) {
  a1.m1();
...

现在,你还能说出会发生什么吗? “嗯,这取决于传递给方法调用的内容?!”

在您的示例中,您知道将会发生什么,因为您可以轻松推断出所有对象的真实性质。但如果您没有这些信息怎么办?当您只提供一个接口(interface),并且传入的对象没有显示在您的源代码中时?!

因此:重要的是运行时对象的true类型。当然,当您构建一个简单的示例时,您始终知道真实类型。但现实世界中重要的事情根本没那么简单。

关于java - java中动态多态性的实时示例是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51895783/

相关文章:

asp.net-mvc - ASP MVC 多下拉列表搜索表单

php - 从数组生成动态链接

class - Fortran 2008 - 用户定义的 CLASS(*) I/O 过程

java - 为什么叫它 "method hiding"?

java - Activity 必须导出或包含 Intent 过滤器

java - 将 SQL 查询重写为 HQL 查询时遇到问题

java - 如何在 SD 卡中创建一个只能用我的应用程序读取或写入的文件夹?

java - 如何设置 ScrollView 的X Y和高度宽度

c# - 如何在数据网格控件的每一行的开头添加复选框控件?

c++ - 为什么多态性在这种情况下不起作用?