Доброго времени суток участники форума. Столкнулся с проблемой при изучении языка C#. Интересует вопрос: почему при наследовании из производного класса мы можем использовать закрытые поля (обозначенные именно private модификатором) через публичные методы, унаследованные от базового класса. Я думал, что такие поля в наследовании не участвуют и соответственно в производном классе их нет. Оставлю в качестве примера код ниже:
namespace Inheritance
{
class BaseClass
{
private int a;
public int A
{
get
{
return a;
}
set
{
a = value;
}
}
}
class DerivedClass : BaseClass
{
}
class Program
{
static void Main()
{
DerivedClass instance = new DerivedClass();
instance.A = 3;
Console.WriteLine(instance.A); // 3
}
}
}
Заранее большое спасибо!
Наследование предполагает расширение базового класса. При расширении и речи быть не может, что будет теряться хоть какая-то часть базового класса. Следовательно, производный класс будет иметь все поля и методы базового класса, включая приватные и защищенные. Если бы что-то из этого не наследовал ось, то работали бы публичные методы без реализации класса (приватных полей и методов)?
Разница в том, что из производного класса нельзя обращаться напрямую к приватным полям, но это возможно с использованием геттеров и сеттеров базового класса.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Начал изучать php и по немного пытаюсь разобраться с MVC (до ООП еще не добрался)Поставил себе цель: сделать простой проект с авторизацией, регистрацией...
Всем привет! Огромная проблема, не получается сделать дропдаун меню для языкового плагина Polyglot WordPressВызывается список в коде вот так: <ul><?php...