在很多时候,常会听别人说,接口(interface)可以达到多重继承的效果,这是怎么回事?
其实要讨论这个问题,首先您对于C++中多重继承要先有认识,新手看了书说接口可以达到多重继承,切莫人云亦云,尤其是没有学过C++的新手们,如果您对于C++多重继承想要有所认识,请先看看 多重继承(一)与 多重继承(二)。
Java不能多重继承,但为何说Java中可以使用接口(interface)来达到多重继承的效果,首先效果之一,就如 多重继承(二) 中描述的「多重继承时通常其中一个基底类别作为private实作体,而其它的用以表现完全的抽象接口。」,在Java中这个效果可以使用接口来达到,接口此时所扮演的即 多重继承(二)中的抽象类别,一个完全的抽象接口,这个效果的达成方式,如 接口(interface)型态 中所介绍的,您可以直接对应这两个主题中的程序实作来了解,了解Java中如何使用接口(interface)型态来达到C++中所谓多重继承的「一种」效果。
来看看另一个情况。
如果有SomeClass类别与OtherClass类别,您想要SomeAndOther类别可以同时拥有SomeClass类别与 OtherClass类别中已定义好的操作,并可以进行多型操作,在C++中可以用多重继承来达到,但在Java中显然的无法使用多重继承,怎么办?您可以在设计上先绕个弯,先使用两个接口分别定义好SomeClass与OtherClass两个类别的公开方法,例如:
public interface ISome {
public void doSome();
}
public interface IOther {
public void doOther();
}
接着让Some与Other类别分别实作两个接口:
public class Some implements ISome {
public void doSome() {
....
}
}
public class Other implements IOther {
public void doOther() {
....
}
}
SomeAndOther如何同时拥有两个Some与Other类别已定义好的操作?并可以多型操作?SomeAndOther可以 继承其中之一,并拥有其中之一,例如:
public class SomeAndOther extends Some implements IOther {
private IOther other = new Other();
public void doOther() {
other.doOther();
}
}
虽不满意,但至少解决了目前的问题,当然这边只是其中一例,毕竟C++是C++,Java是Java,两者语法并不是一对一的关系,视实际需求还可以变化 一下。
分享到:
相关推荐
子对象重叠,虚基类,开销,向上映射,避免MI,修复接口
主要介绍了java为什么不允许类多重继承却允许接口多重继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
类的多重继承演示"<<endl; CDateTimeType dt 1 1 2008 11 12 12 ; 直接使用DateTimeType构造函数设置日期时间 cout<<"调用CDateTimeType类构造函数设定的初始日期 时间为:"<<...
Java编程思想之接口Java中实现多重继承
这是因为Derived d对象地址里依次存了两个不同的父类成员变量值,如下图所示: 从上图看到,其实pa和pb还是位于d对象地址里,只是指向的位置不同而已.所以
4.12接口与多重继承174 4.12.1接口的定义174 4.12.2接口的继承175 4.12.3接口的实现177 4.13内部类179 4.13.1内部类的定义179 4.13.2内部类访问外部类的成员182 4.13.3内部类之间的相互使用185 4.13.4在外部...
包与接口实验报告 实验 包与接口 【实验目的】 1. 了解Java 中包(package)、接口(interface)的作用。...接口解决了Java 不支持多重继承的问题,可以通过实现多个接口达到与多重继承相同的功能。
3.6.2 接口与多重继承··························· (63) 3.6.3 接口的实现····························· (64) 3.6.4 接口中的变量和方法········...
主要介绍了Java基础教程之接口的继承与抽象类,本文介绍了接口继承、接口的多重继承以及抽象类的知识,需要的朋友可以参考下
4-2 方法的重载与方法的覆盖分别代表什么含义? 方法的重载:在同一个类中定义多个同名...JAVA中不支持多重继承,而是通过接口实现比多重继承更强的功能,Java通过接口使处于不同层次甚至不相关的类可以有相同的行为。
它们只支持单一的继承,或者多级继承,这一变化最大的影响,我觉得是大大的降低了编程的难度,因为没有了C++的多级多脉继承,所以接口出现了,它支持多重继承,当然它的主要目的是为了实现解耦,将定义与实现分离。...
Java通过实现接口达到了多重继承的效果 3. 接口表示一种约定,接口表示一种能力。接口体现了约定和实现分离的原则。 4. 抽象类利于代码复用,接口利于代码维护。 5. 通过面向接口编程,可以降低代码将的耦合性,提高...
菱形继承是多重继承中跑不掉的,Java拿掉了多重继承,辅之以接口。C++中虽然没有明确说明接口这种东西,但是只有纯虚函数的类可以看作Java中的接口。在多重继承中建议使用“接口”,来避免多重继承中可能出现的各种...
这个实例用了多重接口 继承 工厂模式 这个实例用了多重接口 继承 工厂模式 这个实例用了多重接口 继承 工厂模式 这个实例用了多重接口 继承 工厂模式
java 类 对象引用 对象 ...还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.
详细介绍JAVA 接口用法,并详解与抽象类区别.还介绍多重继承.
可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。 2.#import 跟#include 又什么...
(3) 接口可以被多重实现,抽象类只能被单一继承 (4) 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中 (5) 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物...
Java不允许多重继承,多重继承必须通过接口实现。 Java引进了abstract 和final修饰词。 带abstract的类称为抽象类,只能作为父类使用, 不能直接产生实例对象。 带final的类不能用作父类被继承, 带final的...
Interface可以实现Java的多重继承,而abstract class不能。abstract class和Interface中都可以没有抽象方法,当然,此刻,abstract class和Interface,也就失 去了abstract的抽象意义。 通常我们所讲的abstract ...