c++面向抽象类(接口)编程及多继承接口编程

面向抽象类编程(面向一套预先定义好的接口编程):
1.其实就是不同模块的解耦合,
2.其本质是:就相当于以前的同名函数问题,子类和父类存在同名函数,必须用virtual关键字修饰,使其可以具备多态性质,但是现在将父类中的同名函数=0,构成了纯虚构函数

#include <iostream>
using namespace std;
class Interface1//接口1//也叫抽象类
{
public:
	virtual int add(int a, int b) = 0;//纯虚构函数,子类必须去实现(必须强制替代实现)
	virtual void print() = 0;//纯虚构函数
};
class Interface2//接口2
{
public:
	virtual int mult(int a, int b) = 0;//纯虚构函数
	virtual void print() = 0;
};
class Parent
{
public:
	int getA()
	{
		a = 0;
		return a;
	}
private:
	int a;
};
class  Child : public Parent, public Interface1, public Interface2//多继承
{
public:
	virtual int add(int a, int b)//必须实现纯虚构函数
	{
		cout << "Child: add()已经执行\n";
		return a + b;
	}
	virtual void print()
	{
		cout << "Child: print()已经执行\n";
	}
	virtual int mult(int a, int b)
	{
		cout << "Child: mult()已经执行\n";
		return a*b;
	}
};
//在抽象类函数多继承中,不会出现多继承的二义性,因为抽象类函数必须在子类中实现函数体,当出现同名函数时只需要实现一个就可以,所以不会出现以往的同一个变量指向不明的情况
void main02()
{
	Child c1;
	c1.print();//未使用多态

	Interface1 *it1 = &c1;//定义父类指针
	it1->add(1, 2);//用父类指针指向子类的对象

	Interface2 *it2 = &c1;
	it2->mult(3, 6);
}

没有更多推荐了,返回首页