接口与多重继承<转>
来源:互联网 发布:lol挂机软件 编辑:程序博客网 时间:2024/05/20 21:48
在很多时候,常会听别人说,接口(interface)可以达到多重继承的效果,这是怎么回事?
其实要讨论这个问题,首先您对于C++中多重继承要先有认识,新手看了书说接口可以达到多重继承,切莫人云亦云,尤其是没有学过C++的新手们,如果您对于C++多重继承想要有所认识,请先看看 多重继承(一)与 多重继承(二)。
Java不能多重继承,但为何说Java中可以使用接口(interface)来达到多重继承的效果,首先效果之一,就如 多重继承(二) 中描述的「多重继承时通常其中一个基底类别作为private实作体,而其它的用以表现完全的抽象接口。」,在Java中这个效果可以使用接口来达到,接口此时所扮演的即 多重继承(二)中的抽象类别,一个完全的抽象接口,这个效果的达成方式,如 接口(interface)型态 中所介绍的,您可以直接对应这两个主题中的程序实作来了解,了解Java中如何使用接口(interface)型态来达到C++中所谓多重继承的「一种」效果。
来看看另一个情况。
如果有SomeClass类别与OtherClass类别,您想要SomeAndOther类别可以同时拥有SomeClass类别与OtherClass类别中已定义好的操作,并可以进行多型操作,在C++中可以用多重继承来达到,但在Java中显然的无法使用多重继承,怎么办?您可以在设计上先绕个弯,先使用两个接口分别定义好SomeClass与OtherClass两个类别的公开方法,例如:
- ISome.java
public interface ISome { public void doSome();}
- IOther.java
public interface IOther { public void doOther();}
接着让Some与Other类别分别实作两个接口:
- Some.java
public class Some implements ISome { public void doSome() { .... }}
- Other.java
public class Other implements IOther { public void doOther() { .... }}
SomeAndOther如何同时拥有两个Some与Other类别已定义好的操作?并可以多型操作?SomeAndOther可以 继承其中之一,并拥有其中之一,例如:
- SomeAndOther.java
public class SomeAndOther extends Some implements IOther { private IOther other = new Other(); public void doOther() { other.doOther(); }}
虽不满意,但至少解决了目前的问题,当然这边只是其中一例,毕竟C++是C++,Java是Java,两者语法并不是一对一的关系,视实际需求还可以变化 一下。
- 接口与多重继承<转>
- 接口与多重继承
- 接口与多重继承
- 接口与多重继承
- JAVA 单继承 与 接口 多重继承
- JAVA 单继承 与 接口 多重继承
- JAVA 单继承 与 接口 多重继承
- 接口2:接口与多重继承(csdn的讨论)
- 接口多重继承
- 多重继承(接口技术)
- 多重继承和接口
- 多重继承与接口的思考(2_of_n)
- Java接口的default method与多重继承
- 继承与接口、多重继承及虚继承、多态与友元
- vb6不支持多重接口继承
- 接口多重继承及注意事项
- 抽象方法 接口 多重继承
- C#接口浅谈(多重继承)
- 第十七周 对三个数字进行排序,传递地址值得方法
- LEADTOOLS WinRT OCR识别代码示例
- C#二进制操作
- iOS 7用户界面过渡指南
- StringBuilder详解C#
- 接口与多重继承<转>
- 雕虫无小技 JavaScript初学者的10个迷你技巧
- IE使用滤镜实现渐变
- python 学习笔记二
- Android获取Manifest中<meta-data>元素的值
- 设计模式之“Observer观察者模式”
- ORACLE数据字典与视图
- 无密码ssh设置
- Fragment 生命周期的一点点个人记录