Abstraction and Interface in C#


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
{
}
}

Up Next
    Ebook Download
    View all
    FileInfo in C#
    Read by 9.7k people
    Download Now!
    Learn
    View all