using System;
namespace Interface2
{
class Program
{
public interface IUndoable { void Undo();}
/*
Uygulanan bir interface'nin elemanları varsayılan olarak sealed(mühürlüdür.) Üzerine yazılabilmesi için(overriden) uygulandığı class içerisinde virtual ya da abstarct
olarak belirtilmesi gerekir.
* Örneğin
*/
public class TextBox : IUndoable
{
public virtual void Undo()//Virtual olarak işaretledik.
{
Console.WriteLine("TextBox.Undo");
}
//void virtual IUndoable.Undo()//Uyarı Interface belirtilerek oluşturulursa virtual ya da abstract metdou kullanamazsınız.Bu durumu diğer notta işleyeceğiz.
//{
// Console.WriteLine("TextBox.Undo");
//}
}
public class RichTextBox : TextBox
{
public override void Undo()//Virtual Olduğu için değiştirebildik.
{
Console.WriteLine("RichTextBox.Undo");
}
}
static void Main(string[] args)
{
RichTextBox r = new RichTextBox();
r.Undo();//RichTextBox.Undo
((IUndoable)r).Undo();//RichTextBox.Undo
((TextBox)r).Undo();//RichTextBox.Undo
Console.ReadKey();
}
}
}