doublench21
@doublench21

В чем же отличия следующих элементов языка C#?

Хотел бы понять:
Чем отличаются абстрактные методы от виртуальных, ведь есть два таких ключевых слова ?
Чем отличается абстрактный класс от интерфейса ?
Чем отличается структура от класса и зачем это надо ?
  • Вопрос задан
  • 520 просмотров
Решения вопроса 1
@dmitryKovalskiy
программист средней руки
Ну во первых купите/скачайте "clr via c#" любых дремучих изданий если не найдете свежее. Во вторых - Абстрактный класс может содержать в себе поля , интерфейс не может. Нельзя реализовать множественное наследование абстрактных классов.
Структура/Класс - гуглите разницу между ссылочными и значимыми типами. А еще лучше - поучите C++ , узнаете где могут храниться переменные в памяти.
Абстракт/Виртуальный методы - Абстракт не имеет реализации. Виртуальный 1)может иметь 2) в основном имеет отношение к наследованию и полиморфизму.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
yarosroman
@yarosroman Куратор тега C#
C# the best
1. Абстрактный метод не имеет реализации, Виртуальный имеет, при этом если, вы вызываете виртуальный метод используя указатель базового класса, то CLR вызовет метод именно того класса, на который указывает указатель, а не метод базового класса.

например

Base b = new Derived();
b.Method();

тут будет вызов реализации Derived.Method, а не Base.Method
т.е. вызов виртуального метода основан не на типе указателя, а на конкретном объекте в памяти, когда как в случае перекрываемых методов будет вызван метод базового класса, а не наследуемого.

2. Абстрактный класс - это класс у которого не реализации указанных методов, а интерфейс указывает какие конкретно методы должны быть реализованы у класса.

3. Структуры хранятся в стеке, а не в куче, структуры нельзя наследовать, нужно зачем, затем, что, структуры несут меньше расходов памяти, значимый тип, несет меньше накладных расходов, и вычислительных процессов, но имеет кучу ограничений.
Ответ написан
Комментировать
Можно вот это еще почитать:
metanit.com/sharp/tutorial/3.1.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы