using System;
/*
* наследование, конструкторы класса и ключевое слово base
*/
class Point2D
{
public Point2D(int x, int y)
{
X = x;
Y = y;
Console.WriteLine("Point2D");
}
public int X { get; set; }
public int Y { get; set; }
public void Print()
{
Console.WriteLine($"X:\t{X}");
Console.WriteLine($"Y:\t{Y}");
}
}
class Point3D : Point2D
{
///
/// base - позволяет нам явно указать что мы хотим использовать (нечто) из базового класса
/// при использовании ключевого слова base мы можем явно указать какой конструктор у базоваого класса используем
///
/// #
/// #
/// #
public Point3D(int x, int y, int z) : base(x, y)
{
Z = z;
Console.WriteLine("Point3D");
}
public int Z { get; set; }
public new void Print()
{
base.Print(); // аналог слова this (решающее неоднозначность)
Console.WriteLine($"Z:\t{Z}");
}
}
class Program
{
static void Main()
{
//прежде чем создается класс конструктором - создаются все его предки
var point3D = new Point3D(1, 2, 3);
point3D.Print();
var point2D = new Point2D(1, 2);
point2D.Print();
Console.ReadKey();
}
}