Наследование. Как сделать так, чтобы присвоение полей исполнилось только в производном классе? - C#
Формулировка задачи:
Здравствуйте.
При создании экземпляра С начало выполняется присвоение полям значений в базовом классе, затем в производном.
Походу, конструктор производного класса неявно вызывает конструктор по умолчанию базового класса.
Как сделать так, чтобы присвоение полей исполнилось только в производном классе.
Вариант с удалением присвоения в базовом классе не рассматривается. Но это работает.
DerivedClass instance = new DerivedClass();
class BaseClass
{
// Поля
// Открытое поле.
public string publicField = "BaseClass.publicField";
// Закрытое поле.
private string privateField = "BaseClass.privateField";
// Защищенное поле.
protected string protectedField = "BaseClass.protectedField";
}using System;
// Наследование.
namespace Inheritance
{
class BaseClass
{
// Поля
// Открытое поле.
public string publicField = "BaseClass.publicField";
// Закрытое поле.
private string privateField = "BaseClass.privateField";
// Защищенное поле.
protected string protectedField = "BaseClass.protectedField";
}
class DerivedClass : BaseClass
{
// Конструктор.
public DerivedClass()
{
// Изменяем все доступные поля унаследованные от базового класса.
publicField = "DerivedClass.publicField";
protectedField = "DerivedClass.protectedField";
}
}
class Program
{
static void Main()
{
DerivedClass instance = new DerivedClass();
Console.WriteLine(instance.publicField);
// Delay.
Console.ReadKey();
}
}
}Решение задачи: «Наследование. Как сделать так, чтобы присвоение полей исполнилось только в производном классе?»
textual
Листинг программы
public class A
{
public string Title;
public A():this("A")
{
}
public A(string s)
{
Title = s;
}
}
public class B : A
{
public B(string s):base(s)
{
//тут что-то еще присваиваем
}
}