 
			
				11.02.2012, 15:12
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 :-/ 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.09.2009 
					
					
					
						Сообщений: 1,126
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Mахmахmахimus
			 
		
	 | 
 
	
		poorking, 
 а, ясно, я все еще не понимаю зачем нужны приватные свойства, по сути это свойства СУЩНСОТЕЙ к которым имеют доступ только что?
	 | 
 
	
 
 вот у тебя есть объект, у него есть интерфейс, который торчит наружу - это публичные методы, ими может пользоваться в любом участке кода, где создан объект данного класса, и это есть тот "набор услуг", который предоставляет этот объект , а приватные методы нужны для внутренних нужд, для реализации внутренней логики класса, нахрена тебе их делать открытыми, если очень поверхностно, то как то так, почитай про PHP что-нить, или про другой язык с "классическим" ООП  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.02.2012, 15:16
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.02.2012 
					
					
					
						Сообщений: 254
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Shaci, 
 спасибо) но я блин знаю что такое приватные методы и публичные) я хочу понять что плохого в том что свойства для внутренних нужд будут доступны снаружи? Как это навредит? Вот в чем суть моего непонимания и этого треда. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.02.2012, 15:27
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 :-/ 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.09.2009 
					
					
					
						Сообщений: 1,126
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Mахmахmахimus
			 
		
	 | 
 
	
		Shaci, 
 спасибо) но я блин знаю что такое приватные методы и публичные) я хочу понять что плохого в том что свойства для внутренних нужд будут доступны снаружи? Как это навредит? Вот в чем суть моего непонимания и этого треда.
	 | 
 
	
 
 зачем тебе делать публичными переменные, которые нужны только для реализации внутренней логики,  
да и в любом случае, даже если в классе предусмотрена возможность изменения переменной, то лучше её проводить через публичный метод, а саму переменную сделать приватной, т.к. тогда можно добавить проверку допустимого значения этой переменной в сеттер, к примеру.
 
Т.е. у тебя есть в классе переменная год. 
Если сделаешь её публичной, то год можно будет ввести любой. и неправильный в том числе, и присвоить этой переменной, 
но если присваивать ей значение через метод(сеттер), то в этом методе можно ввести проверку правильности даты, и если дата неправильная - присваивать 1900, или 1970 год , например) 
Ну и естественно , т.к. переменная теперь private, то если хотим извлекать её значение - то надо и метод для возвращения этой переменной добавить.  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.02.2012, 16:00
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.02.2012 
					
					
					
						Сообщений: 254
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Не, ну это я все тоже  знаю) но что мне мешает менять публичную переменную через сеттер, а не на прямую? факт возможности  менять напрямую что ли? Ну так для этого приватные помечаются __prop двойным жестким вначале чтобы не было ошибок и путаницы. Или есть еще какие то свойства приватных? Вот что я хочу понять! Почему ноют что в js классов нет, хотя они есть), значит должно что-то еще быть, какое то свойство у  приватных. 
 
Или по сути минус в том что существует ОПАСНОСТЬ что человек изменит приватную на прямую не зная что __ это знак приватности так что не должно быть даже технической возможности это с делать? 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Mахmахmахimus, 11.02.2012 в 16:04.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.02.2012, 16:16
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 :-/ 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.09.2009 
					
					
					
						Сообщений: 1,126
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Mахmахmахimus
			 
		
	 | 
 
	| 
		факт возможности  менять напрямую что ли?
	 | 
 
	
 
 когда коду дохрена, лучше исключить все возможности прострелить себе ногу  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.02.2012, 18:54
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.02.2012 
					
					
					
						Сообщений: 254
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Shaci
			
		
	 | 
 
	| 
		когда коду дохрена, лучше исключить все возможности прострелить себе ногу
	 | 
 
	
 
 по сути это единственное отличие приватных от неприватных, ну и еще пространство имен.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.02.2012, 18:56
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.02.2012 
					
					
					
						Сообщений: 254
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Что если сделать так, 
 
Cat.prototype => {тут приватные переменные} => cat 
При том сделать так чтобы методы из Cat.prototype начинали поиск сначала в приватных, потом в самом обьекте, потом уже в самом прототипе? 
 
п.с. эх, жаль прокси работают только в лисе( 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Mахmахmахimus, 11.02.2012 в 19:27.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.02.2012, 19:31
			
			
			
		  
	 | 
 
	
		
		
		
			
			
			
				
				
				
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.07.2008 
					
					
					
						Сообщений: 3,873
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		private-свойства не наследуются 
Трудно что ли на википедию зайти, прочитать:
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	
		• private (закрытый, внутренний член класса) — обращения к члену допускаются только из методов того класса, в котором этот член определён. Любые наследники класса уже не смогут получить доступ к этому члену. Наследование по типу private запрещает доступ из дочернего класса ко всем членам родительского класса, включая даже public-члены (С++); 
• protected (защищённый, внутренний член иерархии классов) — обращения к члену допускаются из методов того класса, в котором этот член определён, а также из любых методов его классов-наследников. Наследование по типу protected делает все public-члены родительского класса protected-членами класса-наследника (С++); 
• public (открытый член класса) — обращения к члену допускаются из любого кода. Наследование по типу public не меняет модификаторов родительского класса (С++);
	 | 
 
	
 
 модификаторы доступа
для чайников 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.02.2012, 19:34
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.02.2012 
					
					
					
						Сообщений: 254
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Octane
			
		
	 | 
 
	| 
		private-свойства не наследуются
	 | 
 
	
 
 в моем примере есть какое-то наследование приватных методов инстанса дочерними классами его класса?
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		 Любые наследники класса уже не смогут получить доступ к этому члену.
	 | 
 
	
 
 наследники класса и не смогут получить доступ к этим приватным  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Mахmахmахimus, 11.02.2012 в 19:37.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				11.02.2012, 19:40
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.02.2012 
					
					
					
						Сообщений: 254
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Класс Cat мы создаёем котенка 
cat = new Cat() 
 
Наследуем класс Bird от класса Cat 
extend(Bird, Cat) 
 
создаем птичку 
bird = new Bird() 
 
птичка не будет иметь доступ к приватным свойствам созданого кота,  
так же другие коты не будут иметь доступ к приватным свойствам созданного кота. 
 
я проще код напишу чтобы понятнее было. 
 
я вот что уточню, есть приватные свойства класса, то есть ОБЩИЕ на всех котов, и есть приватные свойства СУЩНОСТЕЙ котов, они у каждого кота свои. 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Mахmахmахimus, 11.02.2012 в 19:42.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |