Софтуерно Инженерство
Loading...
simeon_petrov avatar simeon_petrov 45 Точки

Разлики между abstract и vitrual methods

Понеже тези няколко изречения ми помогнаха да разбера разликата между това, какво е абстрактен и какво виртуален метод си позволих да ги преведа и да ги пусна във форума.

Абстрактният метод няма функционалност. Дъщерния клас трябва да съдържа собствена версия на метода. Абстрактният метод няма имплементация в родителския клас.

Виртуалната функция, ти казва: виж, тук има функционалност, която може да е, а може и да не е достатъчно добра за дъщерния клас. Ако е достатъчно добра, използвай този метод, ако пък не е, тогава го оверрайдвай и му дай собствена функционалност.

 

An abstract function can have no functionality. You're basically saying, any child class MUST give their own version of this method, however it's too general to even try to implement in the parent class.

A virtual function, is basically saying look, here's the functionality that may or may not be good enough for the child class. So if it is good enough, use this method, if not, then override me, and provide your own functionality.

Оригиналната тема в stackoverflow.

8
C# OOP Basics 14/01/2016 14:07:58
naskoni avatar naskoni 68 Точки

Като допълнение: в C# ако искаме някой метод да може да се override-ва, трябва изрично да се изпише virtual в сигнатурата му. Но в Java по подразбиране всеки метод е virtual, освен ако не е деклариран като final или static.

2