using System;
public class Tester
{
	public class Telephone
	{
		protected string phonetype;
		public virtual void Ring()   // Teraz wirtualna
		{
			Console.WriteLine("Dzwoni telefon {0}. Dzyń, dzyń.", phonetype);
		}
	}

	public class ElectronicPhone : Telephone
	{
		public ElectronicPhone()
		{
			this.phonetype = "Cyfrowy";   // Dostęp do zmiennej chronionej
		}
		public override void Ring()   // Przesłanianie
		{
			Console.WriteLine("Dzwoni telefon {0}. Bip bip.", phonetype);
		}
	}

	public void Run()
	{
		// Przypisuje egzemplarz klasy pochodnej do zmiennej typu klasy bazowej
		Telephone phone = new ElectronicPhone();
		phone.Ring();   // Dostęp do metody polimorficznej
	}

	static void Main()
	{
		Tester t = new Tester();
		t.Run();
	}
}

