base and interface : interface « Class « Visual C++ .NET






base and interface

 
#include "stdafx.h"
using namespace System;

ref class MyClass{
   public:
      virtual void f() { Console::WriteLine("MyClass::f"); }
      virtual void g() { Console::WriteLine("MyClass::g"); }
};

interface class MyInterface{
   void f();
   void g();
};

ref class C : MyClass, MyInterface{
   public:

   virtual void f() new{
      Console::WriteLine("C::f");
   }
   virtual void g() override{
      Console::WriteLine("C::g");
   }
};

int main()
{
   MyClass^ b = gcnew MyClass();
   C^ c = gcnew C();
   MyInterface^ i = c;

   b->f(); // calls MyClass::f
   c->f(); // calls C::f
   i->f(); // calls C::f since C::f implements MyInterface::f

   MyClass^ bc = c;  // b pointing to instance of C
   bc->f(); // calls MyClass::f since C::f is unrelated

   b->g();  // calls MyClass::g
   c->g();  // calls C::g
   i->g();  // calls C::g since C::g implements MyInterface::g

   bc->g(); // calls C::g since C::g overrides MyClass::g
}

   
  








Related examples in the same category

1.Interface definition
2.Interface and class(The virtual keyword is required to implement the interface method)
3.Interface list
4.Interface name collision
5.Interface properties events
6.constants in interfaces
7.interfaces implementing interfaces
8.multiple interfaces
9.static interfaces
10.class interface method ambiguity
11.Explicit interface implementation
12.Private interface