在浏览这个网站的答案时,我碰到了一条线,上面写着
实际上,您根本不需要使用类来实现多态性
这一评论被否决了。我很清楚
重写方法是Java实现多态性的“一个接口、多个方法”方面的另一种方式。方法重载支持多态性,因为它是Java实现一个接口、多个方法范例的一种方式。
我不认为除了通过类之外,我们还可以在Java中实现多态性。如果不是这样的话,有人能用一个很好的例子来详细说明吗?
发布于 2014-09-27 05:50:52
多态仅仅是许多(多)事物以相同的形式或形状(变型)的能力。这个术语本身在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
之类的东西需要类。
https://stackoverflow.com/questions/26071712
复制相似问题