59 lines
1.6 KiB
C#
59 lines
1.6 KiB
C#
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
|
||
{
|
||
/// <summary>
|
||
/// base - позволяет нам явно указать что мы хотим использовать (нечто) из базового класса
|
||
/// при использовании ключевого слова base мы можем явно указать какой конструктор у базоваого класса используем
|
||
/// </summary>
|
||
/// <param name="x">#</param>
|
||
/// <param name="y">#</param>
|
||
/// <param name="z">#</param>
|
||
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();
|
||
}
|
||
} |