Abstract Classes

Abstract Methods - Methods that must be overridden to create a concrete class.

Concrete Class Abstract Class
Acts as a base to other classes Acts as a base to other classes
Can be instantiated Can not be instantiated
Cannot have abstract methods Has at least one abstract method
Child classes may override methods Concrete child classes must override all abstract methods

Abstract classes can have abstract children, until all abstract methods have been overridden.

public abstract class Control
{
    protected int xPos;
    protected int yPos;

    public Control(
        int xPosition,
        int yPosition)
    {
        xPos = xPosition;
        yPos = yPosition
    } 

    public virtual void Clear()
    {
        Console.WriteLine(:"Clearing control");
    }

    //  Abstract Method
    public abstract void Draw();
}
class Button : Control
{
    private string text;

    public Button(
        int xPos,
        int yPox,
        string text) : base(xPos, yPos)
    {
        this.text = text;
    }

    public override void Draw()
    {
        Console.WriteLine("Drawing Button"); //  This Class is made concrete by overriding the abstract method.
    }

}
public class ListBox : Control
{
    private List<string> list = 
        new List<string>();

    public ListBox(
    int xPos,
    int yPos,
    List<string> contents) : 
        base(xPos, yPos)

    {
        this.list = contents;
    }

    public override void Draw();
    {
        Console.WriteLine("Listox Drawing");
    }
}
public class Worker
{
    public class Worker()
    {
        Work();
    }

    public void Work()
    {
        List<Control> controls = 
            new List<Control>();
        Button button = new Button(
            0, 100,
            "Click Me");
        ListBox listBox = new ListBox(
            100, 300, 
            new List<string>());
        Button cancelButton = new Button(
            150, 100,
            "cancel");

        controls.Add(button);
        controls.Add(listBox);
        controls.Add(cancelButton);

        foreach (Control control in controls)
        {
            control.Draw();
        }
    }
}

results matching ""

    No results matching ""