这些多态性的例子是什么?

Bin*_*Bin 5 java oop polymorphism

在浏览了一些关于多态性的问题之后,似乎多态性在Java中是一个普遍的想法,它允许对象表现得好像它是另一个类的实例; 因此代码更加独立于具体类.鉴于这个想法,以下main()方法中的两个方法调用是多态的用法吗?

abstract class A
{
  void f() { System.out.println("A.f()"); }
  abstract void g();
}

class B extends A
{
  void g() { System.out.println("B.g()"); }
}

public class Test
{
  public static void main(String[] args)
  {
    A a = new B();
    a.f();        // Is this an example of Polymorphism?
    a.g();        // ...
  }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

A.f();  
B.g();
Run Code Online (Sandbox Code Playgroud)

Max*_*tin 12

多态性 - 表示给定类型的单个变量用于引用不同类型的对象的能力,并自动调用特定于变量引用的对象类型的方法.简而言之,多态性是一种自下而上的方法调用.多态性的好处是,在不破坏使用多态类或接口的调用代码(即下面显示的示例代码中的getTotArea())的情况下,添加新类派生对象非常容易.当您向对象发送消息时,即使您不知道它是什么特定类型,并且正确的事情发生,这称为多态.面向对象编程语言用于实现多态的过程称为动态绑定.

在此输入图像描述

似乎多态性是Java中的一般概念

多态性,继承封装是面向对象语言的三大支柱(仅限非Java).


Ste*_*n C 6

两者都是多态性的例子.该B表现得像一个A.(我之前错过了abstract void g()宣言.或者你在我们回答的时候添加了它?)

但是,在这种情况下,"一个A"有点橡皮.既然Aabstract你不能有一个对象,它是一个A,而不是其他一些类的一个实例.