не могу разобратся в public, protected и private
во всех учебниках (и т.п.) написано по-разному
хер поймешь
объясните пожалуйста по-русски
заранее спасибо
60 ответов в теме “В чем разница между public, protected и private?”
ну… думаю, что сам смысл одинаковый.
private, public, protected используют в классах, структурах для показания
типа показа даных.
Public: все члены будут открыты для использования. Т.Е. Ты можешь свободно обращаться к ним.
Prшvate: члены закрыты. Могут использоваться только методами своего класса, или же дружественными ф-циями.
Protected:используется при наследовании классов. Производной класс не имеет доступа к защищенным даным родительского класса. Бывают моменты, когда этот доступ нужен, но одновременно методы базового класса должны быть сокрыты… Тогда используют protected
Господи боже мой… Причем тут – изменять? Причем тут "методы базового класса должны быть сокрыты"?
Все эти свойства влияют на область видимости.
public class MyClass {
private int secretVariable;
protected int variableForChildren;
public int variableForEveryone;
}
secretVariable видна только из методов MyClass.
variableForChildren видна только из методов MyClass и его наследников.
variableForEveryone видна всем отовсюду.
Вот и все.
Мля, что тут может быть непонятно?
public – видим везде
pritected – видив в этом и наследуемых классах
private – только в этом классе и больше накося выкуси
А не могли бы вы педоставить трактовку этих понятих, хотелось бы взглянуть на различные толкования.
Э не совсем так. В Java как раз есть именно пакетный доступ – который видно в текущем пакете – то что по умолчанию. Вышеупомянутый internal, это походу некий его аналог.
А вот protected там самый обычный, как везде, как в С++. В С++ так вобще понятия пакет нету, какой там только в пакете?
5 марта 2008 в 20:01
Какой язык – C++ , Java, C#?
5 марта 2008 в 20:02
На пальцах выглядит так:
public – свойство, которое означает, что объект можно изменять из любого класса или метода
private -объект можно изменять только в том классе, где он объявлен
protected – объект можно изменять в том классе, где он объявлен но не в дочернем классе (подклассе) от класса, в котором объявлен объект
5 марта 2008 в 20:03
ну… думаю, что сам смысл одинаковый.
private, public, protected используют в классах, структурах для показания
типа показа даных.
Public: все члены будут открыты для использования. Т.Е. Ты можешь свободно обращаться к ним.
Prшvate: члены закрыты. Могут использоваться только методами своего класса, или же дружественными ф-циями.
Protected:используется при наследовании классов. Производной класс не имеет доступа к защищенным даным родительского класса. Бывают моменты, когда этот доступ нужен, но одновременно методы базового класса должны быть сокрыты… Тогда используют protected
5 марта 2008 в 20:04
Господи боже мой… Причем тут – изменять? Причем тут "методы базового класса должны быть сокрыты"?
Все эти свойства влияют на область видимости.
public class MyClass {
private int secretVariable;
protected int variableForChildren;
public int variableForEveryone;
}
secretVariable видна только из методов MyClass.
variableForChildren видна только из методов MyClass и его наследников.
variableForEveryone видна всем отовсюду.
Вот и все.
6 марта 2008 в 0:01
"во всех учебниках (и т.п.) написано по-разному" — что же это за учебники такие?
6 марта 2008 в 10:03
А в шарпе еще и internal ввели. Это аналог public, но видим только в пределах текущей сборки (под сборкой обычно подразумевается dll).
6 марта 2008 в 12:00
Мля, что тут может быть непонятно?
public – видим везде
pritected – видив в этом и наследуемых классах
private – только в этом классе и больше накося выкуси
А не могли бы вы педоставить трактовку этих понятих, хотелось бы взглянуть на различные толкования.
6 марта 2008 в 13:00
да, на различные я ьоже бы посмотрел.
всегда пож этим подразумевалось одно и тоже, при чем во всех объектных языках
6 марта 2008 в 20:00
Ну кстати есть как минимум 2 различных толкования protected: в java такие члены видны в наследниках и в пакете, а в C# и C++ – только в пакете.
6 марта 2008 в 20:02
Э не совсем так. В Java как раз есть именно пакетный доступ – который видно в текущем пакете – то что по умолчанию. Вышеупомянутый internal, это походу некий его аналог.
А вот protected там самый обычный, как везде, как в С++. В С++ так вобще понятия пакет нету, какой там только в пакете?