не могу разобратся в public, protected и private
во всех учебниках (и т.п.) написано по-разному
хер поймешь
объясните пожалуйста по-русски
заранее спасибо
не могу разобратся в public, protected и private
во всех учебниках (и т.п.) написано по-разному
хер поймешь
объясните пожалуйста по-русски
заранее спасибо
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
4 мая 2008 в 15:02
Все говорите почти одно и то же, только разными словами…Хотя насчет protected в Java правильно сказано.
26 марта 2008 в 0:00
достаточно ссылочек? нашел значит ответ?
25 марта 2008 в 1:02
мне было достаточно
24 марта 2008 в 20:01
прошу прощения, помилилась:)
…а проще всего дать человеку кучу ссылок на английском языке и со своей высокой башни говорить кто прав, а кто нет:)
вы меня, конечно извините, но человек попросил поподробнее.
24 марта 2008 в 18:05
Насколько я понимаю, Татьяна говорит о простом наследовании и виртуальных функциях. Виртуальное же наследование — это "disambiguation of the diamond problem". Поправьте меня, пожалуйста, где я не прав.
24 марта 2008 в 18:05
Прав
23 марта 2008 в 22:05
Татьяна, ты ошибаешься, виртуальное наследование означает абсолютно не то, что ты сказала. Освежи свои знания С++ с помощью приведенной мною ссылки
23 марта 2008 в 18:05
если не ошибаюсь, виртуальное наследование подразумевает, что функция, объявленная в базовом классе как виртуальная в классах-наследниках может быть переопределена, таким образом ее реализация для вызова будет определяться во время ее исполнения.
17 марта 2008 в 8:01
//www.google.com/search?client=opera&rls=en...
17 марта 2008 в 0:01
не совсем понятно, что значит виртуальное наследование (правило 4). можно ли поподробнее?
12 марта 2008 в 6:05
Для НАЧИНАЮЩЕГО можно предложить простые правила:
- делай все члены-данные private (кроме констант);
- делай все члены-методы public;
- делай все вложенные типы public;
- наследуй по public (и virtual С++);
- избегай friend-ов, пока не прижмет.
Если нужен доступ к данным извне класса, пиши Get/Set методы.
Никогда не возвращай из метода неконстантный указатель на член-данных (в C++).
P.S. Просьба не пинать, правила для _начинающих_!
12 марта 2008 в 6:04
программисты вас только запутают. ))
Дали определение видимости (visibility) public/private/protected для членов класса – и все.
Дальше вычисляйте, пользуясь аналогией, что любой базовый (наследуемый) класс – это своего рода член в производном классе.
Так что если член (базовый класс) виден, то далее все его члены видны или не видны в соответствии с их видимостью.
Если будет понятнее, можете составить табличку. Но только сами ее составьте.
11 марта 2008 в 23:00
Спасибо
11 марта 2008 в 17:03
Значит что с таким модификатором доступа они меняют элементы родительского класса при наследовании.
public – оставляет все как есть
protected – наследдует публичные члены как protected
private – наследует все как private
11 марта 2008 в 14:00
что значит private, protected & public – наследования
11 марта 2008 в 13:03
а что именно непонятно?
11 марта 2008 в 12:04
чето я не совсем понял про наследования…
объяните пожалуйста
8 марта 2008 в 0:02
+1
8 марта 2008 в 0:00
поделюсь
по поводу C++:
private – никто кроме методов класса и друзей (как классов, так и функций/операторов) обратиться не может
protected – к ним могут обращаться еще и потомки класса
public – доступно всем
private-наследование:
protected -> private
public -> private
protected-наследование:
protected -> private (тут я не совсем уверен, но вроде верно)
public -> protected
public-наследование:
protected -> protected
public -> public
6 марта 2008 в 22:02
мда… а вы спрашиваете "что за учебники такие" ) 6 вариантов и все разные…
6 марта 2008 в 21:03
Да понял уже, что описка:
>> а в C# и C++ – только в пакете.
))
6 марта 2008 в 21:01
А я про пакеты в С++ ничего и не говорил.
Я просто говорил, что в С++ protected виден только наследникам, а в джаве не только.
6 марта 2008 в 21:00
Ну да кстати, про protecded я чето ступил. )) Спать надо больше, а вот что ты имел про пакеты в C++ так и не понял. )
Или там тоже описка и имелись ввиду наследники?
6 марта 2008 в 20:04
Ошибаешься.
//java.sun.com/docs/books/jls/third_edition/htm...
В java 4 уровня доступа – public, private, protected, package local (default).
public – всем
private – только самому классу, внутренним классам и ближайшему внешнему
protected – пакет + наследники
default – только пакет
6 марта 2008 в 20:02
Э не совсем так. В Java как раз есть именно пакетный доступ – который видно в текущем пакете – то что по умолчанию. Вышеупомянутый internal, это походу некий его аналог.
А вот protected там самый обычный, как везде, как в С++. В С++ так вобще понятия пакет нету, какой там только в пакете?
6 марта 2008 в 20:00
Ну кстати есть как минимум 2 различных толкования protected: в java такие члены видны в наследниках и в пакете, а в C# и C++ – только в пакете.
6 марта 2008 в 13:00
да, на различные я ьоже бы посмотрел.
всегда пож этим подразумевалось одно и тоже, при чем во всех объектных языках
6 марта 2008 в 12:00
Мля, что тут может быть непонятно?
public – видим везде
pritected – видив в этом и наследуемых классах
private – только в этом классе и больше накося выкуси
А не могли бы вы педоставить трактовку этих понятих, хотелось бы взглянуть на различные толкования.
6 марта 2008 в 10:03
А в шарпе еще и internal ввели. Это аналог public, но видим только в пределах текущей сборки (под сборкой обычно подразумевается dll).
6 марта 2008 в 0:01
"во всех учебниках (и т.п.) написано по-разному" — что же это за учебники такие?
5 марта 2008 в 20:04
Господи боже мой… Причем тут – изменять? Причем тут "методы базового класса должны быть сокрыты"?
Все эти свойства влияют на область видимости.
public class MyClass {
private int secretVariable;
protected int variableForChildren;
public int variableForEveryone;
}
secretVariable видна только из методов MyClass.
variableForChildren видна только из методов MyClass и его наследников.
variableForEveryone видна всем отовсюду.
Вот и все.
5 марта 2008 в 20:03
ну… думаю, что сам смысл одинаковый.
private, public, protected используют в классах, структурах для показания
типа показа даных.
Public: все члены будут открыты для использования. Т.Е. Ты можешь свободно обращаться к ним.
Prшvate: члены закрыты. Могут использоваться только методами своего класса, или же дружественными ф-циями.
Protected:используется при наследовании классов. Производной класс не имеет доступа к защищенным даным родительского класса. Бывают моменты, когда этот доступ нужен, но одновременно методы базового класса должны быть сокрыты… Тогда используют protected
5 марта 2008 в 20:02
На пальцах выглядит так:
public – свойство, которое означает, что объект можно изменять из любого класса или метода
private -объект можно изменять только в том классе, где он объявлен
protected – объект можно изменять в том классе, где он объявлен но не в дочернем классе (подклассе) от класса, в котором объявлен объект
5 марта 2008 в 20:01
Какой язык – C++ , Java, C#?