C++程序 创建接口
接口 仅是描述类行为而不承诺实现类的一种方式。在C++编程中,没有内置的接口概念。为了创建接口,我们需要创建一个仅具有纯虚拟方法的抽象类。在C++中,接口也称为纯抽象类。
纯虚拟函数
纯虚拟函数是一种我们仅声明函数而不定义函数的函数。纯虚拟方法/函数的实现是通过方法/函数覆盖在派生类完成的。如果函数在类中定义如下,则称该函数为纯虚拟函数。
virtual datatype functionName(parameter1, parameter2, …) = 0
抽象类
抽象类是专门设计为基类使用的类。抽象类必须至少有一个纯虚拟函数。它可能具有变量和常规函数。抽象类的派生类必须实现它们的基类的所有纯虚拟函数,否则它们也将变为抽象类。
接口的重要性
- 从纯抽象类(接口)派生的任何类必须实现基类即接口的所有方法。
- 可以将接口指针传递给函数和类,因此可以从那里调用派生类的函数。
使用接口的规则
- 仅声明纯虚拟函数。(不定义)
- 对于纯虚拟函数,只分配0。
- 不能创建该类的实例。
- 可以创建指向具有基础抽象类引用的派生类实例的指针。
让我们来看几个创建接口的程序示例。
示例1: 在下面的代码中,创建了一个接口GFG,即一个具有纯虚拟方法的抽象类,并在子类中实现了函数,在主函数中按照使用接口的规则调用了returnString()方法。
// C++ program to implement
// Interface
#include <iostream>
#include <string>
using namespace std;
// Interface(Abstract class
// with pure virtual function)
class GFG
{
public:
virtual string returnString() = 0;
};
class child : public GFG
{
public:
string returnString()
{
return "GeeksforGeeks";
}
};
// Driver code
int main()
{
child childObj;
GFG* ptr;
ptr = &childObj
cout << ptr->returnString();
return 0;
}
输出
GeeksforGeeks
示例2: 在下面的代码中,创建了一个抽象类websiteName,并在其中放置了一个纯虚函数。因此,它充当了接口。方法getName()的功能在基类的两个子类中实现。
// C++程序实现 接口
#include <iostream>
#include <string>
using namespace std;
// 接口(抽象类,纯虚函数)
class websiteName
{
public:
virtual string getName() = 0;
};
class shortForm : public websiteName
{
public:
string getName()
{
return "GFG";
}
};
class fullForm : public websiteName
{
public:
string getName()
{
return "GeeksforGeeks";
}
};
// 主函数
int main()
{
shortForm obj1;
fullForm obj2;
websiteName* ptr;
ptr = &obj1;
cout << "Short form - " <<
ptr->getName();
ptr = &obj2;
cout << "\nFull form - " <<
ptr->getName();
return 0;
}
输出结果
Short form - GFG
Full form - GeeksforGeeks