Ватсон Карли
Шрифт:
Модификатор доступа | Цель | Эквивалент в Java | Описание | По умолчанию |
---|---|---|---|---|
public | Все | public | Без ограничений. | Члены enum и interface , а также пространства имен. |
private | Все | private | Доступны только объявляющему классу. | Члены class и struct . |
internal | Все | недоступно | Доступны файлам в той же сборке. | |
protected | Все | недоступно | Доступны для объявляющего класса и любых его подклассов. В C# protected более ограничен, чем в Java. Закрытый (protected ) доступ не позволит другим файлам в той же сборке иметь доступ к члену. | |
protected internal | Все | protected | Доступны для файлов сборки и подклассов объявляющего класса. |
Конструкторы
Первый метод, который будет вызван в классе в процессе создания экземпляра объекта,— это конструктор. Утверждение справедливо для Java, C++, C# и других языков. Фактически, даже если специально не писать свой собственный конструктор, будет создан конструктор по умолчанию. Но в C# обращение к объекту-предку или другому конструктору обрабатывается совершенно по-другому, чем в Java:
Из этого примера видно, что выполнение вызова конструктора предка или даже другого конструктора можно сделать, "расширяя" его с помощью символа "
C# вводит концепцию деструкторов, позаимствованную из C++. Они работают аналогично завершителям (
Рекомендация в отношении кода деструктора: "сборщик мусора" в .NET не вызывается сразу же после того, как переменная покидает область действия. На самом деле имеется некоторый интервал времени или условия памяти, которые инициируют поток выполнения. Бывают случаи, когда деструктор запускается в условиях нехватки памяти, поэтому желательно делать его код как можно короче. Также неплохо вызывать
Методы
Java и C# существенно различаются в синтаксисе и идеологии в отношении способа, которым объект образовывает методы. Это связано с одной причиной — не все параметры типа ссылочных данных передаются как ссылки и не все простые типы данных должны передаваться по значению. Имеется возможность передавать аргументы по значению, как параметр
будет создавать результат, показанный ниже, как в C#, так и в Java:
Мы передаем
и получить:
Чтобы использовать ссылочный параметр, надо перед типом параметра использовать ключевое слово