2011-02-10 3 views
0

Когда вы должны использовать статические методы в базовом классе и защищенных методах? (Который может быть вызван из производного класса с использованием base.MethodName)Когда должны быть объявлены статические методы в базовом классе?

+0

Вы имеете в виду «** declare ** static methods» (как в заголовке вашего вопроса) или «** использовать ** статические методы» (как в теле вашего вопроса)? –

ответ

2

Статика следует использовать только тогда, когда ваш метод не зависит от состояния объекта
Protected, если вы хотите только потомки вызывать методы базы ,

Base.Method в целом используется при переопределении методов

+1

Состояние объекта -> значения частных и открытых полей/свойств в определенный момент. –

+1

Что такое 'Base.Method'? Что означает это последнее предложение? –

+2

@Code Grey: base.Method означает, что вы _allways_ можете вызвать метод «adult» в унаследованном классе, используя ключевое слово 'base' – basti

1

Защищенные и статические, не являются исключительными.

защищенный означает, что вы позволяете производным классам обращаться к базовому методу.

static означает, что методы не нуждаются в доступе к состоянию экземпляров. Часто их называют методы класса, а не методы экземпляра.

Ключевое слово base полезно только при переопределении члена из базового класса (базовый член часто помечен как виртуальный). Это позволяет вам ссылаться на базовый элемент, если вы перегрузили его в производном классе.

1

Одним из преимуществ статического метода является то, что в памяти остается только одна копия кода. Это может быть особенно полезно, если у вас есть большие коллекции объектов со многими методами. другими словами, он может уменьшить объем памяти. Вам также может быть проще или более интуитивно понятным управлять защищенными блоками кода, действуя на общие данные в многопоточной архитектуре. Тем не менее, вы можете обнаружить синтаксически неприятным передачу экземпляра casted (базового класса) объекта в один из его статических методов базового класса, и некоторые разработчики могут быть смущены этим стилем кодирования, поэтому комментирование такого кода всегда является хорошей идеей.

Смежные вопросы