Different
大约 1 分钟
Different
目录
抽象基类
抽象类
与C++不同
Java
public abstract class Person // 抽象基类(关键字强制被声明,目的只是提高程序的清晰度) { ... public abstract String getDescription();// 抽象方法 }
C++
只要有一个纯虚函数,这个类就是抽象类。在C++中,没有提供用于表示抽象类的特殊关键字。
class Person { public: virtual string getDescription() = 0; // 纯虚函数 }
接口与抽象基类
与C/C++不同
Java
- Java有抽象基类,也有接口的概念
- 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义
C++
- C++没有接口这的概念,不区分接口和纯虚基类 仅使用纯虚基类可以完成相同的需求
Python
没有纯虚积累或接口,但是可以在基类中抛出一个没有被实现的异常,以迫使使用者去实现接口
raise NotImplemented("This method has to be override in a child class")
与C++不同
观察者模式的实现细节上
- C++
- 观察者/监听器,继承一个观察者基类
- 被观察者/触发者,包含一个观察者基类指针
- 而Java则是
- 观察者/监听器,接口实现一个观察者基类
- 被观察者/触发者,包含一个观察者基类指针