猿问

可以使用组合而不是继承来实现多态吗?

我正在学习Java,我知道什么是继承和组合,我看到了很多使用继承展示多态的例子,所以我的第一个问题是,可以使用组合来完成吗?如果是,请举例说明。

我的第二个问题是,可以说 polymorphysim 基本上是方法重载和/或方法覆盖吗?如果是,那为什么?


婷婷同学_
浏览 203回答 3
3回答

芜湖不芜

第一个问题在Java中可以通过两种方式实现多态:通过类继承:class A extends B通过接口实现:class A implements C。在后一种情况下,为了正确实现 A 的行为,可以通过组合来完成,使 A 委托执行接口 C 中指定的任务的其他类/es。示例:假设我们已经有一些实现接口 C 的类:class X implements C{    public String getName() {...}    public int getAge() {...}}我们如何创建一个实现 C 的新类,其行为与 X 相同?像这样:class A implements C{    private C x=new X();    public String getName() {return x.getName();}    public int getAge() {return x.getAge();}} 第二个问题不,多态不是方法重载和/或方法覆盖(实际上,重载与面向对象设计无关):方法重载包括创建一个与同一类中的其他(可能继承的)方法同名但具有不同签名(=参数编号或类型)的新方法。添加新方法是可以的,但这不是多态的目的。方法覆盖包括将新主体设置为继承的方法,以便此新主体将在当前类中执行,而不是在继承方法的主体中执行。这是多态的一个优点,但也不是它的基础。简而言之,多态是一个类用作不同类/接口的能力。
随时随地看视频慕课网APP

相关分类

Java
我要回答