#include <iostream>
using namespace std;

class InterfaceA
{
	virtual void funA() = 0;
};
class InterfaceB:
	public InterfaceA
{
	virtual void funB() = 0;
};
class InterfaceC:
	public InterfaceA
{
};
class InterfaceD:
	public InterfaceB
{
};

class KlasseA:
	public InterfaceB,
	public InterfaceC,
	public InterfaceD
{
public:
	KlasseA();
	~KlasseA();

	void funA() final override;
};

//Implementierung:
KlasseA::KlasseA(){}
KlasseA::~KlasseA(){}
void KlasseA::funA(){}


class KlasseE: public KlasseA
{
public:
	KlasseE();
	~KlasseE();

	void funB() override;
};
//Implementierung:
KlasseE::KlasseE(){}
KlasseE::~KlasseE(){}
void KlasseE::funB(){}


int main() {
	KlasseE *e = new KlasseE();
	
	return 0;
}