Mega Code Archive

 
Categories / C# Tutorial / Class
 

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();         }     }   } 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