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}
“,
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(); } } } [/csharp]

Bank Account class is abstract since there is no single implementation for Withdrawal

   
 
using System;

public class MainClass {
    public static void Main(string[] strings) {
        SavingsAccount sa = new SavingsAccount();
        sa.Withdrawal(100);
        CheckingAccount ca = new CheckingAccount();
        ca.Withdrawal(100);
    }
}
abstract public class BankAccount {
    abstract public void Withdrawal(double dWithdrawal);
}
public class SavingsAccount : BankAccount {
    override public void Withdrawal(double dWithdrawal) {
        Console.WriteLine("Call to SavingsAccount.Withdrawal()");
    }
}

public class CheckingAccount : BankAccount {
    override public void Withdrawal(double dWithdrawal) {
        Console.WriteLine("Call to CheckingAccount.Withdrawal()");
    }
}

    


Abstract Classes and Methods

   
 


using System;

abstract public class MotorVehicle {
    public string make;
    public string model;

    public MotorVehicle(string make, string model) {
        this.make = make;
        this.model = model;
    }
    abstract public void Accelerate();

}

public class Product : MotorVehicle {
    public Product(string make, string model) :
        base(make, model) {
        // do nothing
    }

    public override void Accelerate() {
        Console.WriteLine("In Product Accelerate() method");
        Console.WriteLine(model + " accelerating");
    }
}


class MainClass {
    public static void Main() {
        Product myProduct = new Product("Toyota", "MR2");
        myProduct.Accelerate();
    }
}