Наследование. Как сделать так, чтобы присвоение полей исполнилось только в производном классе? - 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) { //тут что-то еще присваиваем } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д