我们真的需要类来实现Java中的多态吗?

时间:2014-09-27 05:45:40

标签: java polymorphism

在这个网站上找到答案的时候,我遇到了一行说

  

实际上,你根本不需要用于多态的类

这条评论被投了票。 我非常清楚

  

重写方法是Java实现多态性的“一个接口,多个方法”方面的另一种方法。方法重载支持多态,因为它是Java实现单接口,多方法范例的一种方式。

我认为除了通过类之外,我们可以在Java中实现多态。如果不是这样,有人可以用一个很好的例子来详细说明吗?

1 个答案:

答案 0 :(得分:3)

多态性只是许多(多边形)事物采取相同形式或形状(变形)的能力。 this answer中更深入地解释了术语本身。

例如,在C ++中,没有类就可以很容易地完成这个任务:

long getNum (int x)  { return x + 1; }
long getNum (long x) { return x - 1; }

这样做,你会得到两条不同的结果:

long x = getNum (1);
long y = getNum (1L);

您可以使用静态方法在Java中完全完全相同的事情,根本不涉及任何类,但它有点浪费语言:

public class Test {
    public static long getNum (int x)  { return x + 1; }
    public static long getNum (long x) { return x - 1; }
    public static void main(String[] args) {
        System.out.println (getNum (1));
        System.out.println (getNum (1L));
    }
}

输出是:

2
0

现在您已经注意到 实际上是我发布的Java代码中的一个类,但这不是执行多态的要求,它更像是一个要求将语言嵌入到类中的所有的Java语言。如果您订阅了 使多态性依赖于类的视图,那么这也意味着变量赋值和递增i之类的东西需要类。