public Point(double x, double y)
public virtual double Area() => 0;
public virtual double Volume() => 0;
public virtual void DisplayInfo()
Console.WriteLine($"Toạ độ: ({X}, {Y})");
public Circle(double x, double y, double radius) : base(x, y)
public override double Area() => Math.PI * Radius * Radius;
public double Circumference() => 2 * Math.PI * Radius;
public override void DisplayInfo()
Console.WriteLine($"Bán kính: {Radius}");
Console.WriteLine($"Chu vi: {Circumference()}");
Console.WriteLine($"Diện tích: {Area()}");
public Cylinder(double x, double y, double radius, double height) : base(x, y, radius)
public override double Volume() => Area() * Height;
public double SurfaceArea() => 2 * Math.PI * Radius * (Radius + Height);
public override void DisplayInfo()
Console.WriteLine($"Chiều cao: {Height}");
Console.WriteLine($"Diện tích toàn phần: {SurfaceArea()}");
Console.WriteLine($"Thể tích: {Volume()}");
Console.Write("Nhập tọa độ X: ");
double x = Convert.ToDouble(Console.ReadLine());
Console.Write("Nhập tọa độ Y: ");
double y = Convert.ToDouble(Console.ReadLine());
Console.Write("Nhập bán kính: ");
double radius = Convert.ToDouble(Console.ReadLine());
Console.Write("Nhập chiều cao: ");
double height = Convert.ToDouble(Console.ReadLine());
Cylinder cylinder = new Cylinder(x, y, radius, height);
Console.WriteLine("\nThông tin hình trụ:");