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