Приватна віртуальна функція може бути замінена похідними класами, але може викликатися лише з базового класу. Це насправді корисна конструкція, коли вам потрібен такий ефект.

Приватна віртуальна функція може бути замінена похідними класами, але може викликатися лише з базового класу. Це насправді корисна конструкція, коли вам потрібен такий ефект.

Перевизначення функцій у C++ може виникнути лише за наявності спадковості. Перевантажені функції повинні мати різні сигнатури функцій, тобто кількість параметрів або тип даних параметрів повинні бути різними.

Але навіть якщо функція в базовому класі не є віртуальною, ви все ще можете це змінити – за винятком того, що тепер зв’язування є статичним: якщо ви викликаєте функцію через вказівник, статично типізований як Base*, викликається реалізація базового класу, але якщо ви викликаєте її через Derived*, викликається реалізація похідного класу.

Віртуальні функції можуть бути перевизначені похідними класами, але за будь-яких обставин вони будуть викликані лише в базовому класі. тому Ви можете зробити віртуальну функцію приватною, оскільки C++ має контроль доступу, але не має контролю видимості.

Ви не можете перевизначити приватний або статичний метод у Java. Якщо ви створюєте подібний метод із тим самим типом повернення та такими ж аргументами методу в дочірньому класі, тоді він приховає метод суперкласу; це відомо як приховування методу. Так само ви не можете перевизначити приватний метод у підкласі, оскільки він там недоступний.

Функція в межах функції-члена того самого класу означає іншу публічну функцію-член того самого класу. Зараз я покажу вам практично, як отримати доступ до приватного учасника.