Use virtual methods and polymorphism. : Virtual : Class C# Examples


C# Examples » Class » Virtual »

 

Use virtual methods and polymorphism.









    
using  System;  
  
class  Shape  {    
    double  pri_width;    //  private  
    double  pri_height;  //  private  
    string  pri_name;      //  private  
    
    public  Shape()  {    
        width  =  height  =  0.0;    
        name  =  "null";    
    }    
    
    public  Shape(double  w,  double  h,  string  n)  {    
        width  =  w;    
        height  =  h;    
        name  =  n;    
    }    
    
    public  Shape(double  x,  string  n)  {    
        width  =  height  =  x;    
        name  =  n;    
    }    
    
    public  Shape(Shape  ob)  {    
        width  =  ob.width;    
        height  =  ob.height;    
        name  =  ob.name;    
    }    
    
    //  Properties  for  width,  height,  and  name  
    public  double  width  {  
        get  {  return  pri_width;  }  
        set  {  pri_width  =  value;  }  
    }  
  
    public  double  height  {  
        get  {  return  pri_height;  }  
        set  {  pri_height  =  value;  }  
    }  
  
    public  string  name  {  
        get  {  return  pri_name;  }  
        set  {  pri_name  =  value;  }  
    }  
    
    public  void  showDim()  {    
        Console.WriteLine("Width  and  height  are  "  +    
                                              width  +  "  and  "  +  height);    
    }    
    
    public  virtual  double  area()  {      
        Console.WriteLine("area()  must  be  overridden");    
        return  0.0;    
    }      
}    
    
class  Triangle  :  Shape  {    
    string  style;  //  private  
        
    public  Triangle()  {    
        style  =  "null";    
    }    
    
    public  Triangle(string  s,  double  w,  double  h)  :  
        base(w,  h,  "triangle")  {    
            style  =  s;      
    }    
    
    public  Triangle(double  x)  :  base(x,  "triangle")  {    
        style  =  "isosceles";      
    }    
    
    public  Triangle(Triangle  ob)  :  base(ob)  {    
        style  =  ob.style;    
    }    
    
    //  Override  area()  for  Triangle.  
    public  override  double  area()  {    
        return  width  *  height  /  2;    
    }    
    
    //  Display  a  triangle's  style.  
    public  void  showStyle()  {    
        Console.WriteLine("Triangle  is  "  +  style);    
    }    
}    
    
class  Rectangle  :  Shape  {      
    public  Rectangle(double  w,  double  h)  :  base(w,  h,  "rectangle"){  }    
    
    public  Rectangle(double  x)  :  base(x,  "rectangle")  {  }    
    
    //  Construct  an  object  from  an  object.    
    public  Rectangle(Rectangle  ob)  :  base(ob)  {  }    
    
    //  Return  true  if  the  rectangle  is  square.  
    public  bool  isSquare()  {      
        if(width  ==  height)  return  true;      
        return  false;      
    }      

    //  Override  area()  for  Rectangle.  
    public  override  double  area()  {      
        return  width  *  height;      
    }      
}    
    
class  DynShapes  {    
    public  static  void  Main()  {    
        Shape[]  shapes  =  new  Shape[5];    
    
        shapes[0]  =  new  Triangle("right",  8.0,  12.0);    
        shapes[1]  =  new  Rectangle(10);    
        shapes[2]  =  new  Rectangle(10,  4);    
        shapes[3]  =  new  Triangle(7.0);    
        shapes[4]  =  new  Shape(10,  20,  "generic");  
    
        for(int  i=0;  i  <  shapes.Length;  i++)  {    
            Console.WriteLine("object  is  "  +  shapes[i].name);    
            Console.WriteLine("Area  is  "  +  shapes[i].area());    
    
            Console.WriteLine();        
        }    
    }    
}
    
   
  
   



Output

object is triangle
Area is 48

object is rectangle
Area is 100

object is rectangle
Area is 40

object is triangle
Area is 24.5

object is generic
area() must be overridden
Area is 0


HTML code for linking to this page:

Follow Navioo On Twitter

C# Examples

 Navioo Class
» Virtual