using System;
namespace TestAppication
{
public class MainClass
{
abstract class CBaseClass
{
public int iCount;
public CBaseClass() {
Console.WriteLine("CbaseClass created");
icount=30;
}
public virtual void Add() {
iCount+=20;
}
public virtual void Add() {
iCount+=20;
}
public virtual void Add(int iAdd) {
iCount+=iAdd;
}
public void Subtract(){
iCount-=20;
}
public abstract void Subtract(int iSubtract);
public override string ToString() {
return base.ToString()+"-- Methods of CBaseClass";
}
~CBaseClass() {
Console.WriteLine("CBaseClass deleted");
}
};
class CDerivedClass : CBaseClass
{
public CDerivedClass() {
Console.WriteLine("CDerivedClass created");
iCount = 50;
}
public override void add() {
iCount+=20;
}
public void add(int iAdd) {
iCount+=iAdd;
}
public void Subtract() {
iCount-=10;
}
~CDerivedClass() {
Console.WriteLine("CDerivedClass deleted");
}
};
static void main () {
CDerivedClass deriveObject = new CDerivedClass();
CBaseClass basePointer = new CDerivedClass();
CDerivedClass notUsed;
Console.WriteLine("1: " +deriveObject.iCount);
deriveObject.Add();
Console.WriteLine("2: " +deriveObject.iCount);
basePointer.Add(30);
Console.WriteLine("3: " +basePointer.iCount);
basePointer.Subtract();
Console.WriteLine("4: " +basePointer.iCount);
basePointer.Subtract(20);
Console.WriteLine("5: " +basePointer.iCount);
Console.WriteLine("6: {0}" , basePointer);
}
}
}