Abstraction
using System;
namespace OOPs
{
/// <summary>
/// Summary description for Abstract1.
/// </summary>
/// Abstract class
abstract class Abstract1
{
public Abstract1()
{
// TODO: Add constructor logic here
}
//non-abstract method
public void nonabmethod()
{
System.Console.WriteLine("Non Abstract Method!");
}
//abstract method
public abstract void abmethod(); //they are implicitly virtual it is not contain the body of the method
public static void Main()
{
myclass mycls = new myclass();
mycls.nonabmethod();
mycls.abmethod();
}
}
class myclass : Abstract1 //class derived from abstract class
{
public override void abmethod() //must implement the abstract method derived in class
{
System.Console.WriteLine("Abstract Method!");
}
}
}
using System;
namespace OOPs
{
/// <summary>
/// Summary description for Abstract2. Partial implementation of abstract class
/// </summary>
abstract class Abstract2
{
public static void Main()
{
myclass2 mycl = new myclass2();
mycl.method1();
mycl.method2();
}
public Abstract2()
{
// TODO: Add constructor logic here
}
public abstract void method1();
public abstract void method2();
}
abstract class myclass1 : Abstract2
{
public override void method1()
{
Console.WriteLine("Abstract Method #1");
}
}
class myclass2 : myclass1
{
public override void method2()
{
Console.WriteLine("Abstract Method #2");
}
}
}
using System;
namespace OOPs
{
/// <summary>
/// Summary description for Abstract3.
/// </summary>
/// abstract class derived from non abstract class
public class Abstract3
{
public static void Main()
{
mainclass mcl = new mainclass();
mcl.noabsmethod();
mcl.absmethod();
}
public Abstract3()
{
// TODO: Add constructor logic here
}
public void noabsmethod()
{
Console.WriteLine("Non-Abs class method");
}
}
abstract class absclass : Abstract3
{
public abstract void absmethod();
}
class mainclass : absclass
{
public override void absmethod()
{
Console.WriteLine("Abstract method call");
}
}
}
using System;
namespace OOPs
{
/// <summary>
/// Summary description for Abstract4.
/// </summary>
/// abstract class dervied from interface
public abstract class Abstract4 : myowninterface
{
public static void Main()
{
myclasses mc = new myclasses();
mc.IMethod();
}
public Abstract4()
{
// TODO: Add constructor logic here
}
public void IMethod()
{
Console.WriteLine("Method implementation from interface");
}
}
interface myowninterface
{
void IMethod();
}
class myclasses : Abstract4
{
}
}
using System;
namespace OOPs
{
/// <summary>
/// Summary description for Abstract5.
/// </summary>
public abstract class Abstract5
{
public static void Main()
{
Abstract5 abs = new baseclass(); // Polymorphism
abs.method();
abs.method1();
}
public Abstract5()
{
// TODO: Add constructor logic here
}
public abstract void method();
public abstract void method1();
}
class baseclass : Abstract5
{
public override void method()
{
Console.WriteLine("Abstract Method1 of baseclass");
}
public override void method1()
{
Console.WriteLine("Abstract Method2 of baseclass");
}
}
}
Interface:
using System;
namespace OOPs
{
/// <summary>
/// Summary description for Interface1.
/// </summary>
public class Interface1 : myinterface
{
public static void Main()
{
Interface1 inf1 = new Interface1();
inf1.callmethod();
}
public Interface1()
{
// TODO: Add constructor logic here
}
public void callmethod()
{
Console.WriteLine("callmethod implemented!");
}
}
interface myinterface
{
void callmethod();
}
}
using System;
namespace OOPs
{
/// <summary>
/// Combining Interfaces
/// </summary>
public class Interface2 : combineinterface
{
public static void Main()
{
Interface2 inf2 = new Interface2();
inf2.show();
inf2.display();
}
public Interface2()
{
// TODO: Add constructor logic here
}
public void show()
{
Console.WriteLine("Show Method Call!");
}
public void display()
{
Console.WriteLine("Dislay Method Call!");
}
}
interface myinterface1
{
void show();
}
interface myinterface2
{
void display();
}
interface combineinterface : myinterface1, myinterface2
{
}
}
using System;
namespace OOPs
{
public class Interface3 : interdemo
{
public static void Main()
{
Interface3 inf3 = new Interface3();
inf3.show();
if (inf3 is interdemol)
{
interdemol id = (interdemol)inf3;
bool ok = id.display();
Console.WriteLine("Method implmented");
}
else
{
Console.WriteLine("Method not implmented");
}
}
public Interface3()
{
// TODO: Add constructor logic here
}
public bool show()
{
Console.WriteLine("Show method call");
return true;
}
}
interface interdemo
{
bool show();
}
interface interdemol
{
bool display();
}
}
using System;
namespace OOPs
{
public class Interface4 : inf1, inf2
{
public static void Main()
{
Interface4 infobj = new Interface4();
}
public Interface4()
{
// TODO: Add constructor logic here
}
void inf1.show12()
{
Console.WriteLine("call show method1!");
}
void inf2.show12()
{
Console.WriteLine("call show method2!");
}
}
interface inf1
{
void show12();
}
interface inf2
{
void show12();
}
interface inf : inf1, inf2
{
}
}