<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FClass_Interface%2FAbstract_Class</id>
		<title>Csharp/C Sharp/Class Interface/Abstract Class - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FClass_Interface%2FAbstract_Class"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/Abstract_Class&amp;action=history"/>
		<updated>2026-04-29T22:04:14Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/Abstract_Class&amp;diff=552&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/Abstract_Class&amp;diff=552&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:18Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/Abstract_Class&amp;diff=553&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/Abstract_Class&amp;diff=553&amp;oldid=prev"/>
				<updated>2010-05-26T11:38:52Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Abstract Classes and Methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
abstract public class MotorVehicle {&lt;br /&gt;
    public string make;&lt;br /&gt;
    public string model;&lt;br /&gt;
    public MotorVehicle(string make, string model) {&lt;br /&gt;
        this.make = make;&lt;br /&gt;
        this.model = model;&lt;br /&gt;
    }&lt;br /&gt;
    abstract public void Accelerate();&lt;br /&gt;
}&lt;br /&gt;
public class Product : MotorVehicle {&lt;br /&gt;
    public Product(string make, string model) :&lt;br /&gt;
        base(make, model) {&lt;br /&gt;
        // do nothing&lt;br /&gt;
    }&lt;br /&gt;
    public override void Accelerate() {&lt;br /&gt;
        Console.WriteLine(&amp;quot;In Product Accelerate() method&amp;quot;);&lt;br /&gt;
        Console.WriteLine(model + &amp;quot; accelerating&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class MainClass {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        Product myProduct = new Product(&amp;quot;Toyota&amp;quot;, &amp;quot;MR2&amp;quot;);&lt;br /&gt;
        myProduct.Accelerate();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bank Account class is abstract since there is no single implementation for Withdrawal==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
    public static void Main(string[] strings) {&lt;br /&gt;
        SavingsAccount sa = new SavingsAccount();&lt;br /&gt;
        sa.Withdrawal(100);&lt;br /&gt;
        CheckingAccount ca = new CheckingAccount();&lt;br /&gt;
        ca.Withdrawal(100);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
abstract public class BankAccount {&lt;br /&gt;
    abstract public void Withdrawal(double dWithdrawal);&lt;br /&gt;
}&lt;br /&gt;
public class SavingsAccount : BankAccount {&lt;br /&gt;
    override public void Withdrawal(double dWithdrawal) {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Call to SavingsAccount.Withdrawal()&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class CheckingAccount : BankAccount {&lt;br /&gt;
    override public void Withdrawal(double dWithdrawal) {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Call to CheckingAccount.Withdrawal()&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create an abstract class==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C#: The Complete Reference &lt;br /&gt;
by Herbert Schildt &lt;br /&gt;
Publisher: Osborne/McGraw-Hill (March 8, 2002)&lt;br /&gt;
ISBN: 0072134852&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// Create an abstract class. &lt;br /&gt;
 &lt;br /&gt;
using System; &lt;br /&gt;
 &lt;br /&gt;
abstract class TwoDShape {  &lt;br /&gt;
  double pri_width;  // private &lt;br /&gt;
  double pri_height; // private &lt;br /&gt;
  string pri_name;   // private &lt;br /&gt;
  &lt;br /&gt;
  // A default constructor.  &lt;br /&gt;
  public TwoDShape() {  &lt;br /&gt;
    width = height = 0.0;  &lt;br /&gt;
    name = &amp;quot;null&amp;quot;;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Parameterized constructor.  &lt;br /&gt;
  public TwoDShape(double w, double h, string n) {  &lt;br /&gt;
    width = w;  &lt;br /&gt;
    height = h;  &lt;br /&gt;
    name = n;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Construct object with equal width and height.  &lt;br /&gt;
  public TwoDShape(double x, string n) {  &lt;br /&gt;
    width = height = x;  &lt;br /&gt;
    name = n;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Construct an object from an object.  &lt;br /&gt;
  public TwoDShape(TwoDShape ob) {  &lt;br /&gt;
    width = ob.width;  &lt;br /&gt;
    height = ob.height;  &lt;br /&gt;
    name = ob.name;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Properties for width, height, and name &lt;br /&gt;
  public double width { &lt;br /&gt;
    get { return pri_width; } &lt;br /&gt;
    set { pri_width = value; } &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public double height { &lt;br /&gt;
    get { return pri_height; } &lt;br /&gt;
    set { pri_height = value; } &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public string name { &lt;br /&gt;
    get { return pri_name; } &lt;br /&gt;
    set { pri_name = value; } &lt;br /&gt;
  } &lt;br /&gt;
  &lt;br /&gt;
  public void showDim() {  &lt;br /&gt;
    Console.WriteLine(&amp;quot;Width and height are &amp;quot; +  &lt;br /&gt;
                       width + &amp;quot; and &amp;quot; + height);  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Now, area() is abstract. &lt;br /&gt;
  public abstract double area(); &lt;br /&gt;
}  &lt;br /&gt;
  &lt;br /&gt;
// A derived class of TwoDShape for triangles. &lt;br /&gt;
class Triangle : TwoDShape {  &lt;br /&gt;
  string style; // private &lt;br /&gt;
    &lt;br /&gt;
  // A default constructor.  &lt;br /&gt;
  public Triangle() {  &lt;br /&gt;
    style = &amp;quot;null&amp;quot;;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Constructor for Triangle.  &lt;br /&gt;
  public Triangle(string s, double w, double h) : &lt;br /&gt;
    base(w, h, &amp;quot;triangle&amp;quot;) {  &lt;br /&gt;
      style = s;   &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Construct an isosceles triangle.  &lt;br /&gt;
  public Triangle(double x) : base(x, &amp;quot;triangle&amp;quot;) {  &lt;br /&gt;
    style = &amp;quot;isosceles&amp;quot;;   &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Construct an object from an object.  &lt;br /&gt;
  public Triangle(Triangle ob) : base(ob) {  &lt;br /&gt;
    style = ob.style;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Override area() for Triangle. &lt;br /&gt;
  public override double area() {  &lt;br /&gt;
    return width * height / 2;  &lt;br /&gt;
  }  &lt;br /&gt;
  &lt;br /&gt;
  // Display a triangle&amp;quot;s style. &lt;br /&gt;
  public void showStyle() {  &lt;br /&gt;
    Console.WriteLine(&amp;quot;Triangle is &amp;quot; + style);  &lt;br /&gt;
  }  &lt;br /&gt;
}  &lt;br /&gt;
  &lt;br /&gt;
// A derived class of TwoDShape for rectangles.   &lt;br /&gt;
class Rectangle : TwoDShape {   &lt;br /&gt;
  // Constructor for Rectangle.  &lt;br /&gt;
  public Rectangle(double w, double h) :  &lt;br /&gt;
    base(w, h, &amp;quot;rectangle&amp;quot;){ }  &lt;br /&gt;
  &lt;br /&gt;
  // Construct a square.  &lt;br /&gt;
  public Rectangle(double x) :  &lt;br /&gt;
    base(x, &amp;quot;rectangle&amp;quot;) { }  &lt;br /&gt;
  &lt;br /&gt;
  // Construct an object from an object.  &lt;br /&gt;
  public Rectangle(Rectangle ob) : base(ob) { }  &lt;br /&gt;
  &lt;br /&gt;
  // Return true if the rectangle is square. &lt;br /&gt;
  public bool isSquare() {   &lt;br /&gt;
    if(width == height) return true;   &lt;br /&gt;
    return false;   &lt;br /&gt;
  }   &lt;br /&gt;
     &lt;br /&gt;
  // Override area() for Rectangle. &lt;br /&gt;
  public override double area() {   &lt;br /&gt;
    return width * height;   &lt;br /&gt;
  }   &lt;br /&gt;
}  &lt;br /&gt;
  &lt;br /&gt;
public class AbsShape {  &lt;br /&gt;
  public static void Main() {  &lt;br /&gt;
    TwoDShape[] shapes = new TwoDShape[4];  &lt;br /&gt;
  &lt;br /&gt;
    shapes[0] = new Triangle(&amp;quot;right&amp;quot;, 8.0, 12.0);  &lt;br /&gt;
    shapes[1] = new Rectangle(10);  &lt;br /&gt;
    shapes[2] = new Rectangle(10, 4);  &lt;br /&gt;
    shapes[3] = new Triangle(7.0);  &lt;br /&gt;
  &lt;br /&gt;
    for(int i=0; i &amp;lt; shapes.Length; i++) {  &lt;br /&gt;
      Console.WriteLine(&amp;quot;object is &amp;quot; + shapes[i].name);  &lt;br /&gt;
      Console.WriteLine(&amp;quot;Area is &amp;quot; + shapes[i].area());  &lt;br /&gt;
  &lt;br /&gt;
      Console.WriteLine();    &lt;br /&gt;
    }  &lt;br /&gt;
  }  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Demostrates the use of an abstract class, including an abstract method and abstract properties==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
C# Programming Tips &amp;amp; Techniques&lt;br /&gt;
by Charles Wright, Kris Jamsa&lt;br /&gt;
Publisher: Osborne/McGraw-Hill (December 28, 2001)&lt;br /&gt;
ISBN: 0072193794&lt;br /&gt;
*/&lt;br /&gt;
//&lt;br /&gt;
// Abstract.cs -- Demostrates the use of an abstract class, including&lt;br /&gt;
//                an abstract method and abstract properties.&lt;br /&gt;
//&lt;br /&gt;
//                Compile this program with the following command line:&lt;br /&gt;
//                    C:&amp;gt;csc Abstract.cs&lt;br /&gt;
//&lt;br /&gt;
namespace nsAbstract&lt;br /&gt;
{&lt;br /&gt;
    using System;&lt;br /&gt;
    &lt;br /&gt;
    public class AbstractclsMain&lt;br /&gt;
    {&lt;br /&gt;
        static public void Main ()&lt;br /&gt;
        {&lt;br /&gt;
            // Create an instance of the derived class.&lt;br /&gt;
            clsDerived derived = new clsDerived (3.14159);&lt;br /&gt;
            // Calling GetAbstract() actually calls the public method in the&lt;br /&gt;
            // base class. There is no GetAbstract() in the derived class.&lt;br /&gt;
            derived.GetAbstract();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Declare an abstract class&lt;br /&gt;
    abstract class clsBase&lt;br /&gt;
    {&lt;br /&gt;
        // Declare an abstract method. Note the semicolon to end the declaration&lt;br /&gt;
        abstract public void Describe();&lt;br /&gt;
        // Declare an abstract property that has only a get accessor. &lt;br /&gt;
        // Note that you&lt;br /&gt;
        // do not prove the braces for the accessor&lt;br /&gt;
        abstract public double DoubleProp&lt;br /&gt;
        {&lt;br /&gt;
            get;&lt;br /&gt;
        }&lt;br /&gt;
        // Declare an abstract property that has only a set accessor.&lt;br /&gt;
        abstract public int IntProp&lt;br /&gt;
        {&lt;br /&gt;
            set;&lt;br /&gt;
        }&lt;br /&gt;
        // Declare an abstract propety that has both get and set accessors. Note&lt;br /&gt;
        // that neither the get or set accessor may have a body.&lt;br /&gt;
        abstract public string StringProp&lt;br /&gt;
        {&lt;br /&gt;
            get;&lt;br /&gt;
            set;&lt;br /&gt;
        }&lt;br /&gt;
        // Declare a method that will access the abstract members.&lt;br /&gt;
        public void GetAbstract ()&lt;br /&gt;
        {&lt;br /&gt;
            // Get the DoubleProp, which will be in the derived class.&lt;br /&gt;
            Console.WriteLine (&amp;quot;DoubleProp = &amp;quot; + DoubleProp);&lt;br /&gt;
            // You can only set the IntProp value. The storage is in the&lt;br /&gt;
            // derived class.&lt;br /&gt;
            IntProp = 42;&lt;br /&gt;
            // Set the StringProp value&lt;br /&gt;
            StringProp = &amp;quot;StringProperty actually is stored in &amp;quot; +&lt;br /&gt;
                         &amp;quot;the derived class.&amp;quot;;&lt;br /&gt;
            // Now show StringProp&lt;br /&gt;
            Console.WriteLine (StringProp);&lt;br /&gt;
            &lt;br /&gt;
            // Finally, call the abstract method&lt;br /&gt;
            Describe ();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    // Derive a class from clsBase. You must implement the abstract members&lt;br /&gt;
    class clsDerived : clsBase&lt;br /&gt;
    {&lt;br /&gt;
        // Declare a constructor to set the DoubleProp member&lt;br /&gt;
         public clsDerived (double val)&lt;br /&gt;
         {&lt;br /&gt;
             m_Double = val;&lt;br /&gt;
         }&lt;br /&gt;
        // When you implement an abstract member in a derived class, you may not&lt;br /&gt;
        // change the type or access level.&lt;br /&gt;
        override public void Describe()&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine (&amp;quot;You called Describe() from the base &amp;quot; +&lt;br /&gt;
                               &amp;quot;class but the code body is in the \r\n&amp;quot; +&lt;br /&gt;
                               &amp;quot;derived class&amp;quot;);&lt;br /&gt;
            Console.WriteLine (&amp;quot;m_Int = &amp;quot; + m_Int);&lt;br /&gt;
        }&lt;br /&gt;
        // Implement the DoubleProp property. This is where you provide a body&lt;br /&gt;
        // for the accessors.&lt;br /&gt;
        override public double DoubleProp&lt;br /&gt;
        {&lt;br /&gt;
            get {return (m_Double);}&lt;br /&gt;
        }&lt;br /&gt;
        // Implement the set accessor for IntProp.&lt;br /&gt;
        override public int IntProp&lt;br /&gt;
        {&lt;br /&gt;
            set {m_Int = value;}&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // Implement StringProp, providing a body for both the get&lt;br /&gt;
        // and set accessors.&lt;br /&gt;
        override public string StringProp&lt;br /&gt;
        {&lt;br /&gt;
            get {return (m_String);}&lt;br /&gt;
            set {m_String = value;}&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // Declare fields to support the properties.&lt;br /&gt;
        private double m_Double;&lt;br /&gt;
        private int m_Int;&lt;br /&gt;
        private string m_String;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Illustrates abstract classes and methods==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Mastering Visual C# .NET&lt;br /&gt;
by Jason Price, Mike Gunderloy&lt;br /&gt;
Publisher: Sybex;&lt;br /&gt;
ISBN: 0782129110&lt;br /&gt;
*/&lt;br /&gt;
/*&lt;br /&gt;
  Example7_9.cs illustrates abstract classes and methods&lt;br /&gt;
*/&lt;br /&gt;
using System;&lt;br /&gt;
&lt;br /&gt;
// declare the abstract MotorVehicle class&lt;br /&gt;
abstract class MotorVehicle&lt;br /&gt;
{&lt;br /&gt;
  // declare the fields&lt;br /&gt;
  public string make;&lt;br /&gt;
  public string model;&lt;br /&gt;
  // define a constructor&lt;br /&gt;
  public MotorVehicle(string make, string model)&lt;br /&gt;
  {&lt;br /&gt;
    this.make = make;&lt;br /&gt;
    this.model = model;&lt;br /&gt;
  }&lt;br /&gt;
  // declare the abstract Accelerate() method (no code)&lt;br /&gt;
  abstract public void Accelerate();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// declare the Car class (derived from MotorVehicle)&lt;br /&gt;
class Car : MotorVehicle&lt;br /&gt;
{&lt;br /&gt;
  // define a constructor&lt;br /&gt;
  public Car(string make, string model) :&lt;br /&gt;
  base(make, model)&lt;br /&gt;
  {&lt;br /&gt;
    // do nothing&lt;br /&gt;
  }&lt;br /&gt;
  // override the Accelerate() method (contains code)&lt;br /&gt;
  public override void Accelerate()&lt;br /&gt;
  {&lt;br /&gt;
    Console.WriteLine(&amp;quot;In Car Accelerate() method&amp;quot;);&lt;br /&gt;
    Console.WriteLine(model + &amp;quot; accelerating&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Example7_9&lt;br /&gt;
{&lt;br /&gt;
  public static void Main()&lt;br /&gt;
  {&lt;br /&gt;
    // create a Car object&lt;br /&gt;
    Console.WriteLine(&amp;quot;Creating a Car object&amp;quot;);&lt;br /&gt;
    Car myCar = new Car(&amp;quot;Toyota&amp;quot;, &amp;quot;MR2&amp;quot;);&lt;br /&gt;
    // call the Car object&amp;quot;s Accelerate() method&lt;br /&gt;
    Console.WriteLine(&amp;quot;Calling myCar.Accelerate()&amp;quot;);&lt;br /&gt;
    myCar.Accelerate();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test abstract class==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Learning C# &lt;br /&gt;
by Jesse Liberty&lt;br /&gt;
Publisher: O&amp;quot;Reilly &lt;br /&gt;
ISBN: 0596003765&lt;br /&gt;
*/&lt;br /&gt;
 using System;&lt;br /&gt;
 abstract class Window&lt;br /&gt;
 {&lt;br /&gt;
     // constructor takes two integers to&lt;br /&gt;
     // fix location on the console&lt;br /&gt;
     public Window(int top, int left)&lt;br /&gt;
     {&lt;br /&gt;
         this.top = top;&lt;br /&gt;
         this.left = left;&lt;br /&gt;
     }&lt;br /&gt;
     // simulates drawing the window&lt;br /&gt;
     // notice: no implementation&lt;br /&gt;
     abstract public void DrawWindow();&lt;br /&gt;
     protected int top;&lt;br /&gt;
     protected int left;&lt;br /&gt;
 }&lt;br /&gt;
 // ListBox derives from Window&lt;br /&gt;
 class ListBox : Window&lt;br /&gt;
 {&lt;br /&gt;
     // constructor adds a parameter&lt;br /&gt;
     public ListBox(&lt;br /&gt;
         int top,&lt;br /&gt;
         int left,&lt;br /&gt;
         string contents):&lt;br /&gt;
         base(top, left)  // call base constructor&lt;br /&gt;
     {&lt;br /&gt;
         listBoxContents = contents;&lt;br /&gt;
     }&lt;br /&gt;
     // an overridden version implementing the&lt;br /&gt;
     // abstract method&lt;br /&gt;
     public override void DrawWindow()&lt;br /&gt;
     {&lt;br /&gt;
         Console.WriteLine (&amp;quot;Writing string to the listbox: {0}&amp;quot;,&lt;br /&gt;
             listBoxContents);&lt;br /&gt;
     }&lt;br /&gt;
     private string listBoxContents;  // new member variable&lt;br /&gt;
 }&lt;br /&gt;
 class Button : Window&lt;br /&gt;
 {&lt;br /&gt;
     public Button(&lt;br /&gt;
         int top,&lt;br /&gt;
         int left):&lt;br /&gt;
         base(top, left)&lt;br /&gt;
     {&lt;br /&gt;
     }&lt;br /&gt;
     // implement the abstract method&lt;br /&gt;
     public override void DrawWindow()&lt;br /&gt;
     {&lt;br /&gt;
         Console.WriteLine(&amp;quot;Drawing a button at {0}, {1}\n&amp;quot;,&lt;br /&gt;
             top, left);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
 public class TesterAbstractClass&lt;br /&gt;
 {&lt;br /&gt;
     static void Main()&lt;br /&gt;
     {&lt;br /&gt;
         Window[] winArray = new Window[3];&lt;br /&gt;
         winArray[0] = new ListBox(1,2,&amp;quot;First List Box&amp;quot;);&lt;br /&gt;
         winArray[1] = new ListBox(3,4,&amp;quot;Second List Box&amp;quot;);&lt;br /&gt;
         winArray[2] = new Button(5,6);&lt;br /&gt;
         for (int i = 0;i &amp;lt; 3; i++)&lt;br /&gt;
         {&lt;br /&gt;
             winArray[i].DrawWindow();&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>