Test abstract class
/* Learning C# by Jesse Liberty Publisher: O'Reilly ISBN: 0596003765 */ using System; abstract class Window { // constructor takes two integers to // fix location on the console public Window(int top, int left) { this.top = top; this.left = left; } // simulates drawing the window // notice: no implementation abstract public void DrawWindow(); protected int top; protected int left; } // ListBox derives from Window class ListBox : Window { // constructor adds a parameter public ListBox( int top, int left, string contents): base(top, left) // call base constructor { listBoxContents = contents; } // an overridden version implementing the // abstract method public override void DrawWindow() { Console.WriteLine ("Writing string to the listbox: {0}", listBoxContents); } private string listBoxContents; // new member variable } class Button : Window { public Button( int top, int left): base(top, left) { } // implement the abstract method public override void DrawWindow() { Console.WriteLine("Drawing a button at {0}, {1}\n", top, left); } } public class TesterAbstractClass { static void Main() { Window[] winArray = new Window[3]; winArray[0] = new ListBox(1,2,"First List Box"); winArray[1] = new ListBox(3,4,"Second List Box"); winArray[2] = new Button(5,6); for (int i = 0;i < 3; i++) { winArray[i].DrawWindow(); } } }