```csharp=
// abstract class
abstract class Shape
{
public string Id { get; set; }
public abstract double Area { get; }
public virtual void ShowInfo() =>
Console.WriteLine($"Id:{Id}, Area:{Area}");
}
class Rectangle : Shape
{
public double Width { get; set; }
public double Height { get; set; }
public override double Area => Width*Height;
}
class Circle:Shape
{
public double Radius { get; set; }
public override double Area => Radius*Radius*Math.PI;
}
Rectangle rectangle = new Rectangle
{
Id = "矩形1",
Width = 20,
Height = 10
};
Circle circle = new Circle
{
Id = "圓形1",
Radius = 10
};
Shape[] shapes = { rectangle, circle };
foreach (var item in shapes)
{
item.ShowInfo();
}
//==================================
//interface
interface IPlayable
{
void Play();
void Pause();
}
class DVDPlayer : IPlayable
{
public void Pause()
{
Console.WriteLine((nameof(DVDPlayer), nameof(Pause)));
}
public void Play()
{
Console.WriteLine((nameof(DVDPlayer), nameof(Play)));
}
}
DVDPlayer player1= new DVDPlayer();
player1.Play();
player1.Pause();
//=============================
interface IPlayable2
{
void Stop();
}
class DVDPlayer : IPlayable, IPlayable2
{
public void Pause()
{
Console.WriteLine((nameof(DVDPlayer), nameof(Pause)));
}
public void Play()
{
Console.WriteLine((nameof(DVDPlayer), nameof(Play)));
}
public void Stop()
{
Console.WriteLine((nameof(DVDPlayer), nameof(Stop)));
}
}
DVDPlayer player1= new DVDPlayer();
CDPlayer player2 = new CDPlayer();
IPlayable[] players = {player1,player2};
foreach (var item in players)
{
item.Play();
item.Pause();
if(item is IPlayable2 x)
{
x.Stop();
}
}
```