Когда вы должны использовать статические методы в базовом классе и защищенных методах? (Который может быть вызван из производного класса с использованием base.MethodName)Когда должны быть объявлены статические методы в базовом классе?
ответ
Статика следует использовать только тогда, когда ваш метод не зависит от состояния объекта
Protected, если вы хотите только потомки вызывать методы базы ,
Base.Method в целом используется при переопределении методов
Состояние объекта -> значения частных и открытых полей/свойств в определенный момент. –
Что такое 'Base.Method'? Что означает это последнее предложение? –
@Code Grey: base.Method означает, что вы _allways_ можете вызвать метод «adult» в унаследованном классе, используя ключевое слово 'base' – basti
Защищенные и статические, не являются исключительными.
защищенный означает, что вы позволяете производным классам обращаться к базовому методу.
static означает, что методы не нуждаются в доступе к состоянию экземпляров. Часто их называют методы класса, а не методы экземпляра.
Ключевое слово base полезно только при переопределении члена из базового класса (базовый член часто помечен как виртуальный). Это позволяет вам ссылаться на базовый элемент, если вы перегрузили его в производном классе.
Одним из преимуществ статического метода является то, что в памяти остается только одна копия кода. Это может быть особенно полезно, если у вас есть большие коллекции объектов со многими методами. другими словами, он может уменьшить объем памяти. Вам также может быть проще или более интуитивно понятным управлять защищенными блоками кода, действуя на общие данные в многопоточной архитектуре. Тем не менее, вы можете обнаружить синтаксически неприятным передачу экземпляра casted (базового класса) объекта в один из его статических методов базового класса, и некоторые разработчики могут быть смущены этим стилем кодирования, поэтому комментирование такого кода всегда является хорошей идеей.
- 1. Когда должны UIViewControllers быть объявлены как свойства
- 2. Должны ли переменные-члены в singleton быть объявлены как статические?
- 3. не определена ошибка с ++ Статические методы объявлены
- 4. Переопределение статические переменные/методы и их использование в базовом классе
- 5. Методы C++ в базовом классе
- 6. Почему глобальные анонимные союзы должны быть объявлены как статические?
- 7. Почему переменные массивы длины должны быть объявлены в классе автосохранения?
- 8. Когда типы или члены должны быть объявлены статическими?
- 9. Если в классе нет переменных, которые сохраняют статус класса, функции должны быть объявлены как статические функции?
- 10. Статические методы могут быть объявлены только на типе
- 11. Когда вы должны использовать общедоступные статические методы
- 12. Где должны быть объявлены прототипы?
- 13. Где должны быть объявлены переменные?
- 14. Почему все методы экранных объектов должны быть объявлены виртуальными?
- 15. Должны ли все методы абстрактного суперкласса быть объявлены абстрактными?
- 16. Где протоколы SHOULD должны быть объявлены быстрыми?
- 17. Не виртуальные методы в абстрактном базовом классе
- 18. F # Статические методы в классе
- 19. ОСУЩЕСТВЛЕНИЮ Статические методы в классе
- 20. Когда переменные должны быть заданы в классе
- 21. Где переменные должны быть объявлены в Swift
- 22. Должны ли быть объявлены виртуальные методы, реализующие чистые виртуальные методы класса интерфейса?
- 23. Должны ли мы «super()» в базовом классе?
- 24. Статические методы объявлены, но не определены ошибки C++
- 25. синхронизирующие статические методы в том же классе
- 26. Как проверить методы в базовом классе ApplicationRecord?
- 27. методы протокола Исполнительное Swift в базовом классе
- 28. Когда использовать статические методы и методы класса
- 29. Предикаты в классе Utils должны быть представлены как константы или как статические методы?
- 30. Функции: Где они могут/должны быть объявлены?
Вы имеете в виду «** declare ** static methods» (как в заголовке вашего вопроса) или «** использовать ** статические методы» (как в теле вашего вопроса)? –