C++中的接口被实现为抽象类,即纯虚方法。类似地,C++中的抽象类也是以同样的方式实现的。我可以说接口和抽象在C++中是一样的吗,除了接口可以是动词的概念-行为和抽象类是一个名词。我的理解正确吗?我之所以问这个问题,是因为设计模式--讨论接口和抽象的方式不同。另外,原因是JAVA有两个不同的关键字-接口和抽象。我们需要在java中实现一个接口。我们需要扩展抽象类。然而,在CPP中,我们只继承抽象类,然后实现。
发布于 2014-11-03 21:26:19
正如您所说的,C++中的接口是使用抽象类实现的,其中只有和纯虚函数。纯虚函数必须被任何具体的(即非抽象的)派生类覆盖。通过将表达式=0添加到虚拟函数,我们表明虚拟函数是纯虚拟函数。抽象类是至少包含一个纯虚函数( one )的类。
例如:
class AbstractBase {
public:
const char* Hello() { return "Hello World!"; } // a normal non-virtual function
virtual void Method_1() {} // a normal virtual function
virtual int Method_2() = 0; // a pure virtual function makes AbstractBase class not instantiable
};
class InterfaceBase {
public:
const char* Hello() = 0; // a pure virtual function
virtual void Method_1() = 0; // a pure virtual function
virtual int Method_2() = 0; // a pure virtual function
};发布于 2014-11-03 20:53:20
不,抽象类可以为方法提供默认行为;接口是纯虚的,不能。这从根本上是不同的。
行为和抽象类是一个名词
这没有任何意义。行为始终是动词。
抽象类和接口的要点是多态性:根据运行时类型的不同而有不同的行为。
发布于 2014-11-03 20:58:59
如果它的所有方法都是抽象的,并且没有数据成员,那么C++类实际上是and接口。但是,如果一个类至少有一个抽象方法,那么它就已经是抽象的了。仍然可以定义其他虚拟函数、非虚拟函数和数据成员。这些都不属于接口。
https://stackoverflow.com/questions/26714773
复制相似问题