Как не инициировать поля базового класса в его производных классах? - C#
Формулировка задачи:
У меня есть базовый класс, от него идут несколько производных классов, от которых, в свою очередь, идут свои производные классы.
Набросал упрощенный вариант, одного из ветвлений:
Как можно организовать подобное, так чтобы, когда я создаю класс Class2 не инициировались поля суперкласса?(name, price)
PS. В моем случае там будет null и 0.
using System; using System.Linq; namespace Test_01 { class Program { static void Main(string[] args) { BaseClass[] baseClass = { new Class3(new Class2(), "100", 100) }; Console.WriteLine(string.Join("",baseClass.Select(s=>s))); Console.ReadKey(false); } } public abstract class BaseClass : IComparable<BaseClass> { private string _name; private double _price; protected string Name { get { return _name; } set { _name = value; } } protected double Price { get { return _price; } set { _price = value; } } protected BaseClass() { } public BaseClass(string name, double price) { _name = name; _price = price; } public int CompareTo(BaseClass other) { throw new NotImplementedException(); } } abstract class Class1 : BaseClass { private string _text; protected string Text { get { return _text; } set { _text = value; } } protected Class1(string name, double price) : base(name, price) { } protected Class1() { } public virtual string GetText() => Text; } abstract class Class1Dec : Class1 { protected Class1Dec(string name, double price) : base(name, price) { } } class Class2 :Class1 { public Class2() { this.Text = "Hello"; } } sealed class Class3 : Class1Dec { Class1 _class1; public Class3(Class1 class1, string name, double price) : base(name, price) { _class1 = class1; } public override string GetText() { return _class1.GetText() + " World!"; } public override string ToString() { return this.GetText(); } } }
Решение задачи: «Как не инициировать поля базового класса в его производных классах?»
textual
Листинг программы
1) BaseClass 2) protected BaseClass() {} 3) Class1 : BaseClass 4) protected Class1(){} 5) class Class2 :Class1 6) public Class2(){//todo:}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д