JAVA 的interface观念 与C++ 多重继承的比较

interface与多重继承的观念
不管是Java的interface或是C++的多重继承╋在物件导向的理论里╋都算是蛮新颖的概念。所以这里我们谈的╋是以程式语言的角度╋看看Java interface的所有意义与功能╋是否C++的多重继承能全部诠释?或是相反地以Java的来诠释C++的。
首先让我们来复习一下什么是C++的多重继承。
 「继承」通常在物件导向程式语言中╋扮演着程式码的重复利用的重责大任╋而C++的多重继承则让某一个子类别可以继承许多分属于不同资料型别的父类别如下:
#include <stdio.h>
class Test1 {
public:
virtual void f1() {puts("Test1::f1()"; }
virtual void g1() {puts("Test1::g1()"; }
};
class Test2 {
public:
virtual void f2() { puts("Test2::f2()"; }
virtual void g2() { puts("Test2::g2()"; }
};
class Test3 : public Test1, public Test2 {
public:
virtual void gg() { puts("Test3::gg()"; }
};
void main() {
Test3 t3; t3.f1(); t3.f2();
t3.g1(); t3.g2(); t3.gg();
}
// 程式输出:
Test1::f1() Test2::f2() Test1::g1()
Test2::g2() Test3::gg()
程式1

时间: 2024-11-03 23:21:57

JAVA 的interface观念 与C++ 多重继承的比较的相关文章

使用Java Debug Interface(JDI)调试多线程应用程序

多线程环境下的程序调试是让开发者头痛的问题.在 IDE 中通过添加断点的 方式调试程序,往往会因为停在某一条线程的某个断点上而错失了其他线程的执 行,线程之间的调度往往无法预期,并且会因为断点影响了实际的线程执行顺序 .因此,在调试多线程程序时,开发者往往会选择打印 Trace Log 的方式来帮 助调试. 使用 Log 来帮助调试的问题在于,开发者往往无法预期哪些关键点需要记录 ,于是在整个程序的调试过程中,需要不断的加入 Log 调用,编译生成可执行 程序并部署,这对于大尺寸的软件开发项目无

用Delphi开发JNI(Java Native Interface)应用(一)

JNI(Java Native Interface,Java本地接口)技术大家都不陌生,它可以帮助解决Java访问底层硬件的局限和执行效率的提高.关于JNI的开发,大多数资料讨论的都是如何用C/C++语言开发JNI,甚至于JDK也提供了一个Javah工具来自动生成C语言程序框架.但是,对于广大的Delphi程序员来说,难道就不能用自己喜爱的Delphi与Java互通消息了吗? 通过对Javah生成的C程序框架和JDK中的JNI.h文件的分析,我们发现,Java利用JNI访问本地代码的关键在于JN

深入解析Java接口(interface)的使用_java

Java接口(interface)的概念及使用 在抽象类中,可以包含一个或多个抽象方法:但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加"抽象". 接口使用 interface 关键字来声明,可以看做是一种特殊的抽象类,可以指定一个类必须做什么,而不是规定它如何去做. 现实中也有很多接口的实例,比如说串口电脑硬盘,Serial ATA委员会指定了Serial ATA 2.0规范,这种规范就是接口.Serial ATA委员会不负责生产硬盘,只是指定

Java注释@interface的用法【转】

       Java用  @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类.@Override,@Deprecated,@SuppressWarnings为常见的3个注解.注解相当于一种标记,在程序中加上了注解就等于为程序加上了某种标记,以后,JAVAC编译器,开发工具和其他程序可以用反射来了解你的类以及各种元素上有无任何标记,看你有什么标记,就去干相应的事.       注解@Override用在方法上,当我们想重写一个方法时,在方法上

Java:使用内部类实现类的多重继承

Java不支持类的多重继承,但可以使用内部类来继承实现更多的类. 下面的例子,目标类需要继承两个抽象类(A和B).目标类C本身继承类A,并使用一个匿名内部类继承另一个类B. MultiImplementation.java abstract class A { abstract void methodA(); } abstract class B { abstract void methodB(); } class C extends A { @Override void methodA() {

Java的“多重继承”

接口只是比抽象类"更纯"的一种形式.它的用途并不止那些.由于接口根本没有具体的实施细节--也就是说,没有与存储空间与"接口"关联在一起--所以没有任何办法可以防止多个接口合并到一起.这一点是至关重要的,因为我们经常都需要表达这样一个意思:"x从属于a,也从属于b,也从属于c".在C++中,将多个类合并到一起的行动称作"多重继承",而且操作较为不便,因为每个类都可能有一套自己的实施细节.在Java中,我们可采取同样的行动,但只有

针对 Java 开发人员的 C# 编程语言

编程 本文讨论 Java 和 C# 之间的异同点,目的在于当迁移到 .NET 时,让 Java 开发人员掌握所涉及的一些知识.Java 和 C# 之间的主要相似点是: • Java 和 C# 都源于 C++,并且共有 C++ 的一些特征. • 两种语言都需要编译成中间代码,而不是直接编译成纯机器码.Java 编译成 Java 虚拟机 (Java Virtual Machine, JVM) 字节码,而 C# 则编译成公共中间语言 (Common Intermediate Language, CIL

农民伯伯 谈 接口 [interface]

前言      相信大家对接口是不陌生的,但是你真的理解什么是接口吗?真的能用好吗?我们口口声声说按接口编程,到底如何接口编程呢?接口编程的意义在哪呢?...对于接口的迷茫,经常在三层结构里面看到的,千篇一律的把每一个Dao都写一个接口,每个Service再写一个接口,因为他们看的例子就是这样的,网上很多例子都是这样的,这就叫按接口编程了?!心里没底,到下次自己写项目自己设计的时候再加上赶进度怕是没这么勤奋的复制粘贴了,原因还是没有明白接口到底有什么用!甚着感觉接口这玩意就像脱裤子放屁--多此一

interface,abstract class 的区别

问题描述 接口是抽象类的变体,新型多继承性可通过实现这样的接口而获得.接口中的所有方法都是抽象的,所有成员变量都是publicstaticfinal的. 解决方案 解决方案二:你要问啥啊?解决方案三:对啊,你要问啥啊?解决方案四:Java中interface接口与abstractclass抽象类的区别interface和abstractclass是Java中实现多态的基础,都很有用,但也有一些区别: Java代码 1.interface被继承时用的关键字是implements,而且可以同时imp