<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Propriedade privada, herda ou não herda?"]]></title>
		<link>http://www.guj.com.br/posts/list/4.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Propriedade privada, herda ou não herda?"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Opa,<br /> <br /> pessoal, membros (atributos e metodos) privados sao herdados ou não? Pode parecer besta essa pergunta, mas olhando o livro da Kath vi q ela fala q nao eh herdado...e ao meu ver, herdar eh uma coisa, ter acesso é outra...<br /> <br /> flw]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412355.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412355.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 17:48:51]]> GMT</pubDate>
				<author><![CDATA[ pardal_nb]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Never!!!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412356.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412356.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 17:49:45]]> GMT</pubDate>
				<author><![CDATA[ fec]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ pardal to discutindo isso contigo desde de manha e tu sabe o q acho uhauhaua entao nao herda...  um exemplo classico.<br /> <br /> "seu pai tem uma cueca que é private, algo pessoal dele, vc nao vai querer herdar uma cueca dele ne? pq é algo pessoal e foi declardo como private." Agora tu vai querer herdar a casa, o carro etc..<br /> entao aquilo que é pessoal  tu declara como private.. <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"><br /> <br /> flw"]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412357.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412357.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 18:05:03]]> GMT</pubDate>
				<author><![CDATA[ LPJava]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ <br /> Never, mas com umas sacanagens de reflection eu vejo ela... <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412360.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412360.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 18:14:15]]> GMT</pubDate>
				<author><![CDATA[ saoj]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Como saoj disse, via reflection dar para ler os atributos privados.<br /> <br /> Dessa forma:<br /> <br /> [code]public class Aluno {<br /> private String teste = "Feliz Natal";<br /> }<br /> <br /> import java.lang.reflect.Field;<br /> <br /> public class AlunoMain extends Aluno {<br /> <br /> 	public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {<br /> 		AlunoMain alunoMain = new AlunoMain();<br /> 		Field fields[] = alunoMain.getClass().getSuperclass().getDeclaredFields();<br /> 	    for (int i = 0; i &lt; fields.length; i++){  <br /> 	       fields[i].setAccessible(true); <br /> 	       System.out.println("Nome: "+fields[i].getName());<br /> 	       System.out.println("Valor: "+fields[i].get(alunoMain));<br /> 	    }<br /> 	}<br /> <br /> }[/code]<br /> <br /> <br /> []'s]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412371.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412371.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 18:59:58]]> GMT</pubDate>
				<author><![CDATA[ acopiara]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ "Membros marcados como privados não podem ser acessados por código em nenhuma outra classe que não aquela na qual o membro privado foi declarado."<br /> <br /> "Quando um membro é declarado como privado uma subclasse não pode herdar dele."<br /> <br /> Fonte: Certificação Sun para Programador Java? 5.<br /> <br /> SCJP Exame 310-055]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412372.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412372.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 19:01:50]]> GMT</pubDate>
				<author><![CDATA[ crpablo]]></author>
			</item>
			<item>
				<title>Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=pardal_nb]Opa,<br /> <br /> pessoal, membros (atributos e metodos) privados sao herdados ou não? Pode parecer besta essa pergunta, mas olhando o livro da Kath vi q ela fala q nao eh herdado...e ao meu ver, herdar eh uma coisa, ter acesso é outra...<br /> <br /> [/quote]<br /> <br /> Não. São a mesma coisa.<br /> Se algo não é herdado isso significa que não pertence ao escopo do objeto filho. Se não pertence ao escopo não ha como ter acesso. Se ele é private ele não pertence ao escopo do objeto filho, logo não tem acesso.<br /> <br /> Reflection não vem ao caso porque o livro da Kathy não se mete por ai. <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412374.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412374.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 19:16:34]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=crpablo]"Membros marcados como privados não podem ser acessados por código em nenhuma outra classe que não aquela na qual o membro privado foi declarado."<br /> <br /> "Quando um membro é declarado como privado uma subclasse não pode herdar dele."<br /> <br /> Fonte: Certificação Sun para Programador Java? 5.<br /> <br /> SCJP Exame 310-055[/quote]<br /> <br /> eu ja falei isso para ele,  scanei a pag e envei mais ele nao acredita... ohh my god!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412399.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412399.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 21:38:48]]> GMT</pubDate>
				<author><![CDATA[ LPJava]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Cara, eu não me lembro onde, mas eu já li que os membros private são herdados, porém, não são acessados... só não lembro onde foi que eu li.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412400.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412400.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 21:42:27]]> GMT</pubDate>
				<author><![CDATA[ Lintz_net]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Foi mal chegar assim, mas se eu precisasse de um atributo que só as subclasses pudessem acessar, quem eu usaria? Protected ou public? Se eu usar publc ficaria uma variável global :S]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412404.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412404.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 21:48:36]]> GMT</pubDate>
				<author><![CDATA[ Andre Brito]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=Lintz_net]Cara, eu não me lembro onde, mas eu já li que os membros private são herdados, porém, não são acessados... só não lembro onde foi que eu li.[/quote]<br /> <br /> foi aki:<br /> <a class="snap_shots" href="http://ctp.di.fct.unl.pt/lei/lp1/teoricas/28.html" target="_blank" rel="nofollow">http://ctp.di.fct.unl.pt/lei/lp1/teoricas/28.html</a><br /> <br /> ???]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412405.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412405.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 21:53:39]]> GMT</pubDate>
				<author><![CDATA[ pardal_nb]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Mas e qual seria a vantagem de herdar e não acessar?<br /> <br /> Continuo com a pergunta feita pela minha pessoa acima.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412408.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412408.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 21:57:27]]> GMT</pubDate>
				<author><![CDATA[ Andre Brito]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ sabe o q eh [b]HERANÇA[/b] ??<br /> <br /> me fala o q é ?!  <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412410.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412410.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 22:06:42]]> GMT</pubDate>
				<author><![CDATA[ pardal_nb]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=pardal_nb][quote=Lintz_net]Cara, eu não me lembro onde, mas eu já li que os membros private são herdados, porém, não são acessados... só não lembro onde foi que eu li.[/quote]<br /> <br /> foi aki:<br /> <a class="snap_shots" href="http://ctp.di.fct.unl.pt/lei/lp1/teoricas/28.html" target="_blank" rel="nofollow">http://ctp.di.fct.unl.pt/lei/lp1/teoricas/28.html</a><br /> <br /> [/quote]<br /> <br /> Ai diz o seguinte :<br /> <br /> [quote]<br /> A generalidade dos métodos de instância das superclasses são herdados pelas subclasses, ficando a fazer parte destas. Exceptuam-se:<br /> <br />     * os métodos privados<br />     * os métodos não-privados que são redefinidos <br /> <br /> [b]Um subclasse não tem qualquer forma de acesso aos métodos não-herdados privados[/b] (pois claro, eles são privados!). Também não consegue aceder directamente aos métodos não-herdados redefinidos.<br /> <br /> [/quote]<br /> <br /> É bem claro. <br /> <br /> [quote]<br /> <br /> <br /> (...)<br /> <br /> Todas as variáveis de instância das superclasses (mesmo as variáveis private) são herdadas pelas subclasses, ficando a fazer parte dos seus objectos. No entanto a subclasse fica sem acesso<br /> <br />     * às variáveis herdadas privadas <br /> <br /> [/quote]<br /> <br /> <br /> Essa é engraçada... herda mas não tem acesso... <br /> a explicação é esta<br /> <br /> [quote]<br /> <br /> Precaução 1<br /> Nem todos os livros se entendem relativamente à definição do termo herança.<br /> <br /> Nós adoptamos a visão de que se consideram herdadas todas as componentes da superclasse que são reutilizadas na implementação dos objectos da subclasse. Esta visão permite discutir a implementação dos objectos com maior clareza.<br /> <br /> A outra visão considera que só são herdadas as componentes que ficam directamente visíveis na subclasse. Esta visão é confusa pois obriga a esclarecer que, certas componentes da superclasse, apesar de se dizerem não-herdadas, são reutilizadas na implementação dos objectos das subclasses, estando disponíveis para acesso indirecto dentro da subclasse. <br /> [/quote]<br /> <br /> Eles não seguem a mesma "visão" que as pessoas normais.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412412.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412412.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 22:30:32]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Senhores,<br /> <br /> 1. herança sempre herda tudo (absolutamente tudo) da classe pai.<br /> 2. herança deve ser usado para "especializar" uma classe, ou seja, ampliar o escopo ou fazer algo para situações particulares.<br /> Exemplo classico:<br /> <br /> [code]public Ponto { public double x,y; }<br /> public Poligono {<br />    private Ponto[] pontos;<br />    public double perimetro() {<br />       double soma =0d;<br />       for( int i=1 ; i&lt;pontos.length()~; i++) {<br />           soma += distancia(pontos[i],pontos[i-1]);<br />       }<br />    }<br />    abstract double area();<br />    public Ponto getPonto(int ponto) {<br />       if(ponto &lt; pontos.length) return pontos[ponto];<br />       return null;<br />    }<br />    public void initPontos(int qtos) {<br />        pontos = new Ponto[qtos];<br />    }<br />    public double distancia(Ponto a, Ponto b) {<br />           return Math.sqrt( (a.x-b.x)*(a.x-b.x) + <br />                                    (a.y-b.y)*(a.y-b.y) );<br />    }<br />    // outros métodos omitidos....<br /> }<br /> <br /> public class Quadrado extends Poligono {<br />     public Quadrao() {<br />         initPontos(4);<br />     }<br />     public double area() {<br />         double lado=distancia( getPonto(1), getPonto(0) );<br />         return lado*lado;<br />     }<br /> }[/code]<br /> <br /> observe que se o objetos da classe Quadrado não tivesse herdado os atributos e métodos, o seu funcionamento não seria o mesmo.<br /> <br /> fw<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412416.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412416.java</link>
				<pubDate><![CDATA[Fri, 21 Dec 2007 23:18:10]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Guizelini,<br /> <br /> Eu também achava que heradava tudo... mas pelo que dizem estou errado.<br /> <br /> Sim eu sei o que é [b]HERANÇA[/b]!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412427.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412427.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 00:26:44]]> GMT</pubDate>
				<author><![CDATA[ Andre Brito]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=dedejava]Guizelini,<br /> <br /> Eu também achava que heradava tudo... mas pelo que dizem estou errado.<br /> <br /> Sim eu sei o que é [b]HERANÇA[/b]![/quote]<br /> <br /> Então eu vou mudar a pergunta, você já viu ou alguém conseguiu te demonstrar que uma subclasse não herda todos os recursos (inclusive os privados)?<br /> <br /> Tenho algumas propostas para avaliar a implementação do Java com relação a esse ponto:<br /> <br /> A primeira:<br /> Crie uma classe base com um tipo int como campo private e atribua a ele um inteiro qualquer.<br /> Veja a quantidade de memória disponível<br /> instancie e armazene em um array list 1000 desses objetos<br /> Veja a quantidade de memória disponível<br /> repita para 10.000 e 100.000.<br /> Você conseguirá ver o quanto de memória esse objeto está ocupando.<br /> Depois crie uma subclasse da primeira classe com mais um único atributo inteiro e faça o mesmo teste.<br /> Qual será o resultado esperado? o dobro do consumo de memória.<br /> <br /> A segunda:<br /> Use o profile do netbenas e verifique os objetos.<br /> <br /> A terceira:<br /> faça a serialização de uma classe base e de uma subclasse, e armazene em disco.<br /> <br /> eu dei uma procurada por cima na especificação da VM do java e não encontrei onde descreve isso, e deveria ser na parte de memória da VM. Mas o comportamento das linguagens como elas são implementadas internamente são muito similares. Lembrei de ter lido isso no manual do Delphi a alguns anos, procurei o manual no google e:<br /> <br /> [quote]The internal data format of an object resembles that of a record. The fields of an<br /> object are stored in order of declaration as a contiguous sequences of variables. Any<br /> fields inherited from an ancestor class are stored before the new fields defined in the<br /> descendant class.[/quote]<br /> fonte: Object Pascal Language Guide, 167<br /> link: [url]http://portal.aauj.edu/portal_resources/downloads/programming/delphi_object_pascal_language_guide.pdf[/url]<br /> <br /> então quem te disse que uma subclasse não herda tudo da superclasse está definitivamente errado.<br /> <br /> fw]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412442.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412442.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 08:05:09]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Vejo que cada um fala uma coisa....<br /> <br /> herda TUDO, nao herda PRIVATE...<br /> <br /> afinal, HERDA ou NAO HERDA ???<br />  <img src="http://www.guj.com.br/images/smilies/908627bbe5e9f6a080977db8c365caff.gif" border="0"> <br /> <br />  <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412443.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412443.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 08:14:27]]> GMT</pubDate>
				<author><![CDATA[ pardal_nb]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=pardal_nb]Vejo que cada um fala uma coisa....<br /> <br /> herda TUDO, nao herda PRIVATE...<br /> <br /> afinal, HERDA ou NAO HERDA ???<br />  <img src="http://www.guj.com.br/images/smilies/908627bbe5e9f6a080977db8c365caff.gif" border="0"> <br /> <br />  <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"> [/quote]<br /> <br /> baseado na kathy  ex-engenheira da sun, co-desenvolvedora do exame  nao herda. e para com essa agonia pardal ja tem dois dias.. uauauhauh]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412447.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412447.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 08:50:38]]> GMT</pubDate>
				<author><![CDATA[ LPJava]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Teste muito simples....<br /> [code]<br /> class A {<br />     private int i;<br />     short s;<br /> }<br /> <br /> class B extends A {<br /> 	<br />     void testeDeHeranca() {<br />         System.out.println(s);<br />         System.out.println(i); // não compila<br />         System.out.println(super.i); // não compila<br />     }<br /> 	<br /> }<br /> [/code]<br /> <br /> Como você pode ver, o atributo [i]i[/i] não é herdado.<br /> Membros privados de uma classe não são acessíveis por nenhuma outra. NENHUMA. As outras classes não sabem sequer se os membros privados existem.<br /> Dada a afirmação acima, pense nisso: como uma classe pode herdar aquilo que ela nem sabe se existe?<br /> <br /> OBS: Por [i]membro[/i], leia atributos e métodos.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412448.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412448.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 09:06:56]]> GMT</pubDate>
				<author><![CDATA[ felipealbuquerque]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Pessoal,<br /> <br /> Existe uma diferença entre a existência de um atributo e a sua visibilidade.<br /> <br /> O que o Dieval quer dizer é que, uma classe filha herdará um atributos e métodos do pai, no sentido de que, essas estruturas existirão, serão alocadas em memória, e serão usadas pelos mecanismos internos da classe. Afinal de contas, o filho [b]é um[/b] objeto da classe pai e nada mais natural do que ele ter absolutamente todos os atributos do pai.<br /> <br /> Entretanto, graças às regras de escopo, esses atributos e métodos não serão visíveis na classe filha. Daí a confusão. Assim, eles são herdados (pq existem e são acessados indiretamente pelos filhos), mas não são visíveis, estão fora do escopo da classe filha.<br /> <br /> Por isso, não é possível fazer polimorfismo de métodos privados, por exemplo. O que ocorre se sobrescrevermos métodos privados é acabarmos com métodos de escopos diferentes. Um deles será usado quando a porção do pai invocar, outro será usado quando a porção do filho invocar que, se houvesse polimorfismo, apenas o método do filho seria invocado.<br /> <br /> Isso é o que realmente acontece. Agora, a sensação para quem implementa um filho é de que os atributos e métodos privados [b]não existem[/b]. Por isso tantos livros dizerem que não são herdados. Vai muito do que o autor considerar ou não herança.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412451.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412451.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 09:23:43]]> GMT</pubDate>
				<author><![CDATA[ ViniGodoy]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Com relação a kathy,<br /> <br /> existem dois pontos, a forma com que ele escreve e para qual objetivo. Para o iniciante pode ser interessente ele ter a idéia de que não acontece a herança para entender o escopo de visualização, mas não a forma de implementação interna e quanto mais com relação a teoria de OO.<br /> <br /> Outro ponto, você está se baseando em uma informação traduzida de má qualidade. Procure aqui mesmo no GUJ e você irá verificar que os tradutores fizeram um péssimo trabalho...<br /> <br /> É como o Vini falou.<br /> <br /> fw<br /> <br /> Ps: felipealbuquerque recomendo que você veja o meu exemplo anterior, você está equivocado. O seu exemplo mostra o nível de controle sobre o escopo do recurso e não significa que a herança não ocorreu.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412454.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412454.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 09:30:54]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=Dieval Guizelini]<br /> 1. herança sempre herda tudo (absolutamente tudo) da classe pai.<br /> [/quote]<br /> <br /> Não tem como Herdar membros privados... por isso tem os Gets e Setters!<br /> <br /> <br /> Abraços!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412475.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412475.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 11:39:05]]> GMT</pubDate>
				<author><![CDATA[ truck1n]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=truck1n][quote=Dieval Guizelini]<br /> 1. herança sempre herda tudo (absolutamente tudo) da classe pai.<br /> [/quote]<br /> <br /> Não tem como Herdar membros privados... por isso tem os Gets e Setters!<br /> <br /> Abraços![/quote]<br /> <br /> Vocês estão andando em circulos...<br /> <br /> os métodos são apenas "interfaces" entre os estados internos de um objeto (propriedades, variáveis de instâncias, tipos primitivos) e o mundo externo (outros objetos). Os métodos por si só não são capazes de PRESERVAR a informação.<br /> Quando se cria uma instância de uma subclasse ela possui TODAS as características da classe pai, por isso ela pode ser comparada com o operador instanceof da classe pai e ter como resultado verdadeiro, pois este operador verifica que objeto (de uma subclasse) É uma instância da classe pai, o que é muito diferente de TER um membro de uma determinada classe.<br /> <br /> Logo o fato de um ou mais recursos serem declarados como private não impede destes mesmos recursos estarem presentes (fazerem parte) das instâncias de classes filhas. Não está em discussão se estes recursos são ou não acessíveis através destas instâncias e apenas se eles são ou não HERDADOS.<br /> <br /> fw]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412480.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412480.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 11:59:06]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=truck1n][quote=Dieval Guizelini]<br /> 1. herança sempre herda tudo (absolutamente tudo) da classe pai.<br /> [/quote]<br /> <br /> Não tem como Herdar membros privados... por isso tem os Gets e Setters!<br /> <br /> <br /> Abraços![/quote]<br /> <br /> ACHO que você tem razão... Me deixou na dúvida agora... se eu tenho uma variável de instância j private, usar um getJ e um setJ(tipo novoJ), eu posso acessar com o get e setar com o set? Então ela é tanto visível quanto pode ser modificada e manipulada, concorda?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412501.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412501.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 13:40:16]]> GMT</pubDate>
				<author><![CDATA[ Andre Brito]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ dedejava,<br /> <br /> em partes,<br /> <br /> você deve lembrar que os métodos podem realizar validações, e eventualmente não modificar o conteúdo da variável. Exemplo o CPF, você pode ter um método setCPF que valide a informação passada e se ela não passar pelo algoritmo de validação ela não será atribuída a propriedade cpf.<br /> Na prática, os set e gets são recomendados principalmente para quando você precisar incluir alguma validação ou gerar um "evento/notificação" de modificação ou de acesso possa ser implementado a posteriori. Ou por exemplo, para se modificar o domínio ou realizar qualquer modificação interna no objeto sem a necessidade de reescrever todos as classes e objetos que façam uso destes recursos. <br /> O legal de se compreender as definições de OO, é que se bem utilizados os métodos como interfaces das propriedades, você poderá modificar com relativa segurança quase tudo do seu objeto sem impactar nos outros pontos do sistema. O outro ponto é que a propriedade pode ser relevante para outros valores/estados do próprio objeto.<br /> <br /> fw<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412507.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412507.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 14:19:46]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Eu fiz os seguintes códigos:<br /> <br /> [code]<br /> <br /> /**<br />  * Write a description of class Superclasse here.<br />  * <br />  * @author (your name) <br />  * @version (a version number or a date)<br />  */<br /> public class Superclasse<br /> {<br />     // instance variables - replace the example below with your own<br />     private int naoHerda;<br />     int herda;<br /> <br />     /**<br />      * Constructor for objects of class Superclasse<br />      */<br />     public Superclasse()<br />     {<br />         naoHerda = 20;<br />         herda = 10;<br />     }<br />     <br />     /**<br />      * Metodo acessador ao naoHerda<br />      */<br />     public int getNaoHerda() {<br />         return naoHerda;<br />     }<br />     <br />     /**<br />      * Metodo acessador ao herda<br />      */<br />     public int getHerda() {<br />         return herda;<br />     }<br />     <br />     /**<br />      * Metodo modificador de naoHerda<br />      * @param novoNaoHerda Novo valor de naoHerda<br />      */<br />     public void setNaoHerda(int novoNaoHerda) {<br />         naoHerda = novoNaoHerda;<br />     }<br />     <br />     /**<br />      * Metodo modificador de herda<br />      * @param novoHerda Novo valor de herda<br />      */<br />     public void setHerda(int novoHerda) {<br />         herda = novoHerda;<br />     }<br /> }<br /> [/code]<br /> <br /> A a subclasse<br /> <br /> [code]<br /> <br /> /**<br />  * Write a description of class Subclasse here.<br />  * <br />  * @author (your name) <br />  * @version (a version number or a date)<br />  */<br /> public class Subclasse extends Superclasse<br /> {<br />     /**<br />      * Constructor for objects of class Subclasse<br />      */<br />     public Subclasse()<br />     {<br />         super();<br />     }<br />     <br />     /**<br />      * Vai apresentar os valores 10 e 20 na tela<br />      */<br />     public void imprimeTodos() {<br />         System.out.println("super.herda = " + super.herda);<br />         System.out.println("herda =  " + herda);<br />         //System.out.println("super.naoHerda = " + super.naoHerda); // esse nao compilou, como o felipao disse<br />         //System.out.println("naoHerda = " + naoHerda); // esse tambem nao<br />         System.out.println("nao herda = " + super.getNaoHerda());<br />     }<br />     <br />     /**<br />      * Vai mudar os valores de herda e naoHerda (pelo menos vai tentar)<br />      */<br />     public void setValores(int novoNaoHerda, int novoHerda) {<br />         super.setNaoHerda(novoNaoHerda);    // aqui ele compila em ambos... mesmo sendo private, e possivel mudar o valor da variavel entao?<br />         super.setHerda(novoHerda);<br />     }<br /> }<br /> [/code]<br /> <br /> Bom... aí já tá dito né... agora é possível tanto acessar os valores e mostrar os mesmos e setar novos valores pra eles.<br /> Tá certo e coeso isso?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412508.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412508.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 14:29:20]]> GMT</pubDate>
				<author><![CDATA[ Andre Brito]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Senhores,<br /> Para responder é necessário tão somente lembrar das definições em OO para Herança:<br /> Por herança compreendemos todos ser a capacidade que uma determinada classe possui de encapsular os membros de uma outra classe, então chamada "superclasse".  Sabemos ainda que uma relação de herança corresponde a uma relação "is a". Ou seja: se "uma classe" "estende" uma outra, ela é "uma outra". Se é "uma outra", possui todos os membrpos existentes em "uma outra", o que inclui os membros privados. Pronto! A questão está respondida!<br /> Mas, para que não hajam dúvidas, lembremos a definição de membro privado. Que diz que um membro privado só pode ser acessado a partir da classe em que é encapsulado. Desta forma, mesmo que "uma classe" herde um membro privado de "uma outra", não poderá acessá-lo pois este membro não foi encapsulado em "uma classe', mas sim em "uma outra". Caso seja necessário op acesso a estes membros privados em "uma outra" a partir de "uma classe", definem-se  seletores e modificadores públicos para estes membros em "uma outra".]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412510.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412510.java</link>
				<pubDate><![CDATA[Sat, 22 Dec 2007 14:49:27]]> GMT</pubDate>
				<author><![CDATA[ malsan]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Eu li os posts desse tópico, que é muito interessante, e estou convencido de que membros privados de superclasses são herdados pelas suas subclasses. Já a visibilidade é outra coisa, eu estava confundindo herança com visibilidade.<br /> <br /> Obrigado a todos pelas informações fornecidas!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412702.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412702.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 13:14:47]]> GMT</pubDate>
				<author><![CDATA[ felipealbuquerque]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ certo.. visibilidade é outra coisa.. mais segundo a kathy o membro nao é herdado.. seu filho tem  o mesmo cpf que vc? <br />  se tem um campo de cadatro cpf vc vai querer colocar private nao? para que outras classes nao acesse.. o membro..<br /> <br /> veja em anexo o que kathy diz..]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412709.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412709.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 13:47:29]]> GMT</pubDate>
				<author><![CDATA[ LPJava]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Uma classe A herdar de uma classe B não significa que um objeto da classe A herde de outro da classe B.<br /> O exemplo do CPF ilustra bem essa afirmação. O pai é um objeto da A e tem um atributo privado cpf. O filho é da classe B, que estende A, portanto também tem um cpf. Não necessariamente os CPFs são os mesmos. Mas o fato é que os dois têm um CPF.<br /> Mas... como o CPF é privado, o filho não consegue acessá-lo ao menos que haja métodos getters e setters para esse atributo, acessíveis para a classe B, definidos na superclasse. Havendo esses métodos, a edição e a obtenção desse atributo ocorrem sem problemas.<br /> <br /> Exemplo em código:<br /> [code]<br /> class A {<br />     private String cpf;<br /> <br />     public String getCpf() {<br />         return this.cpf;<br />     }<br /> <br />     public void setCpf(String cpf) {<br />         this.cpf = cpf;<br />     }<br /> }<br /> <br /> class B extends A {<br />     //<br /> }<br /> <br /> class Teste {<br />     <br />     public static void main(String[] args) {<br />         B b = new B();<br />         b.setCpf("99.999.999-99"); // Alterando a propriedade CPF<br />         System.out.println(b.getCpf()); // Obtendo a propriedade CPF<br />     }<br /> <br /> }<br /> [/code]<br /> Como podemos ver, o atributo é herdado, tanto que conseguimos acessá-lo através de métodos getters e setters. O que não podemos fazer é acessar o atributo [i]cpf[/i] diretamente, pois não há privilégios de [b]visibilidade[/b] suficientes para tal ação.<br /> <br /> Espero ter conseguido expor corretamente o meu ponto de vista.  :D <br /> <br /> A propósito... feliz natal (antecipado) a todos!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412713.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412713.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 14:20:04]]> GMT</pubDate>
				<author><![CDATA[ felipealbuquerque]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Caro Irmão,<br /> Não compreendi o lance de "ter o mesmo CPF do meu pai". A comparação não é o que se pode chamar de acertada!<br /> Em princípio eu e meu pai não poderíamos ser de classes distintas a não ser que eu fosse algo que meu pai não é (ambos somos apenas pessoas) e não se herda valores, como o numero do CPF, mas sim atributos como ter ou não ter CPF.<br /> Disse e torno a repetir: o fato de um membro não estar disponível não significa que o mesmo não exista. O autor do livro cometeu um pequeno engano tentando "simplificar" a coisa. Ao menos em níve de código a coisa é diferente!<br /> Depois, quando tiver tempo, eu vou postar um código que usa reflexão (introspecção) para provar via código o que digo!<br /> Aproveito o ensejo para desejar um Feliz e Consciencioso Natal (Kristnasko) e um 2008 de realizações!<br /> Shalom!<br /> San]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412717.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412717.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 14:52:51]]> GMT</pubDate>
				<author><![CDATA[ malsan]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Realmente esse exemplo de CPF de pai e filho dado pelo nosso amigo não foi muito legal. Mas serviu para que eu pudesse montar um exemplo... hehe.<br /> <br /> Na verdade, um pai TEM-UM filho (ou mais).]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412718.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412718.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 14:56:38]]> GMT</pubDate>
				<author><![CDATA[ felipealbuquerque]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=felipealbuquerque]Uma classe A herdar de uma classe B não significa que um objeto da classe A herde de outro da classe B.<br /> O exemplo do CPF ilustra bem essa afirmação. O pai é um objeto da A e tem um atributo privado cpf. O filho é da classe B, que estende A, portanto também tem um cpf. Não necessariamente os CPFs são os mesmos. Mas o fato é que os dois têm um CPF.<br /> Mas... como o CPF é privado, o filho não consegue acessá-lo ao menos que haja métodos getters e setters para esse atributo, acessíveis para a classe B, definidos na superclasse. Havendo esses métodos, a edição e a obtenção desse atributo ocorrem sem problemas.<br /> <br /> Exemplo em código:<br /> [code]<br /> class A {<br />     private String cpf;<br /> <br />     public String getCpf() {<br />         return this.cpf;<br />     }<br /> <br />     public void setCpf(String cpf) {<br />         this.cpf = cpf;<br />     }<br /> }<br /> <br /> class B extends A {<br />     //<br /> }<br /> <br /> class Teste {<br />     <br />     public static void main(String[] args) {<br />         B b = new B();<br />         b.setCpf("99.999.999-99"); // Alterando a propriedade CPF<br />         System.out.println(b.getCpf()); // Obtendo a propriedade CPF<br />     }<br /> <br /> }<br /> [/code]<br /> Como podemos ver, o atributo é herdado, tanto que conseguimos acessá-lo através de métodos getters e setters. O que não podemos fazer é acessar o atributo [i]cpf[/i] diretamente, pois não há privilégios de [b]visibilidade[/b] suficientes para tal ação.<br /> <br /> Espero ter conseguido expor corretamente o meu ponto de vista.  :D <br /> <br /> A propósito... feliz natal (antecipado) a todos![/quote]<br /> <br /> cara vc foi infeliz nesse exemplo, pq o fato de vc chamar um metodo e ele chamar uma variavel privada nao quer dizer que a sublclasse obteve a variavel.. o que vc fez apenas foi chamar um metodo.. e ele fez a tarefa que tem q realziar.. se chamou uma variavel private, ou se  mudou o valor de um variavel isso nao importa para a subclasse, sao coisas distintas velho.. primeiro temos que aprender o conceito de "herdar".... e esse seu exemplo nao mostra isso com a variavel private... alias lembra de uma das regras do encapsulamento e de usar os metodos set e get como nomeclatura javabeans?<br /> <br /> Bom sugiro fortemente  dar uma lida no livro da kathy sobre o assunto capitulo 2.. e na minha opniao.. acho que aqui no forum, em termo academico e de experiencia profissional, nao tem no forum, profissionais com o nivel superior que o da kathy sierra para discutir que a afirmação dela está errada. Levando em conta q ela viveu dentro da sun por mais de 10 anos.. e participou de todos os projetos envolvendo java...<br /> <br /> flw!! feliz natal!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412729.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412729.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 16:22:32]]> GMT</pubDate>
				<author><![CDATA[ LPJava]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ LPJava,<br /> <br /> Sobre o CPF, você me deixou um pouco na dúvida. Seria privado (como o nome, data de nascimento, e tal), mas não seria característica própria de cada objeto? A classe só ditaria o campo, não teria um cpf int = 2222222;. Porque na verdade, TODOS tem CPF, data de nascimento, nome e tal. Desculpe se falei algo de errado, mas esse assunto é MUITO ambíguo.<br /> <br /> Abraço LPJava e os demais e feliz natal.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412734.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412734.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 16:44:56]]> GMT</pubDate>
				<author><![CDATA[ Andre Brito]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=dedejava]LPJava,<br /> <br /> Sobre o CPF, você me deixou um pouco na dúvida. Seria privado (como o nome, data de nascimento, e tal), mas não seria característica própria de cada objeto? A classe só ditaria o campo, não teria um cpf int = 2222222;. Porque na verdade, TODOS tem CPF, data de nascimento, nome e tal. Desculpe se falei algo de errado, mas esse assunto é MUITO ambíguo.<br /> <br /> Abraço LPJava e os demais e feliz natal.[/quote]<br /> <br /> no caso do exemplo  do cpf, o que foi herdado foi apenas o metodo.. faz o teste de colocar o metodo setCPF como private  para vc ver... entao.. todo mundo tem um cpf.. mais nesse caso ai.. o cpf nao foi herdado por ser private.. e como coloquei na pagina anterior uma parte que a kathy fala no livro.. dela.. exatamente esse assunto e explica pq nao herdado.. o q acontece no exemplo  dado, é uma caracteristica de encapsulamento e nao de herança...<br /> <br /> para comprovar o que to falando so muda o metodo de public para private para vc ver.. que cpf nao foi herdado.<br /> <br /> uma pergunta: seu pai herdou a cueca do seu avo? ou ele herdou apenas o que foi definido pelo seu avo?<br /> pense nisso, pois é a mesma coisa dos membros private.<br /> <br /> flw! <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412735.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412735.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 16:51:12]]> GMT</pubDate>
				<author><![CDATA[ LPJava]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Heheh. Pois é.<br /> A subclasse não herda visivilmente, mas veja que no meu exemplo que eu dei na página anterior o campo é herdado, posso mudar ele com métodos modificadores (mutators, como diz Deitel) e acessar o valor das mesmas com gets. Por que isso ocorre?<br /> <br /> Meu pai não herda a cueca do meu avo (que poderia ser verde, rasgada e de tamanho x), mas herda o ter que usar a cueca (que pode ser de um tipo diferente, tipo box :p).<br /> <br /> Abraço.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412736.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412736.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 17:00:25]]> GMT</pubDate>
				<author><![CDATA[ Andre Brito]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=dedejava]Heheh. Pois é.<br /> A subclasse não herda visivilmente, mas veja que no meu exemplo que eu dei na página anterior o campo é herdado, posso mudar ele com métodos modificadores (mutators, como diz Deitel) e acessar o valor das mesmas com gets. Por que isso ocorre?<br /> <br /> Meu pai não herda a cueca do meu avo (que poderia ser verde, rasgada e de tamanho x), mas herda o ter que usar a cueca (que pode ser de um tipo diferente, tipo box :p).<br /> <br /> Abraço.[/quote]<br /> <br /> uhaua rpz eu desistir de explicar esse assunto eu fiquei uma manha com pardal discutindo isso hhee.. mas o procedimento do metodo é diferente cara.. muito diferente.. é uma pratica de encapsulamento que é diferente a herança.. lembra da regra de coesao e acomplamento?  os dois envolve herança e encapsulamento.. <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0">.<br /> <br /> obs.: Eu sei  pq fizeram confusao com algo simples e visivel.. e se der uma lida  nos conceitos de OO vai ver que a kathy está correta.. e a galera ainda  permanece dizendo que herda meu deus.. uhauha<br /> <br /> flw!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/412759.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/412759.java</link>
				<pubDate><![CDATA[Mon, 24 Dec 2007 20:59:21]]> GMT</pubDate>
				<author><![CDATA[ LPJava]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=LPJava]certo.. visibilidade é outra coisa.. mais segundo a kathy o membro nao é herdado.. seu filho tem  o mesmo cpf que vc? <br />  se tem um campo de cadatro cpf vc vai querer colocar private nao? para que outras classes nao acesse.. o membro..<br /> veja em anexo o que kathy diz..[/quote]<br /> <br /> O exemplo do CPF foi péssimo. Isso é o valor de um dado, de uma instância. Você e o seu filho tem um CPF e ambos os CPFs significam a mesma coisa. Isso, é a herança. A classe está relacionada a definição do atributo, não ao seu valor.<br /> <br /> A Kathy comete um erro comum, que é justificável pelo papel que se propõe: Trocar precisão técnica por didática. É mais fácil explicar para um aluno que um atributo não é herdado. O aluno, no estágio inicial, ainda não está familiarizado com o conceito da herança e não está também muito seguro das regras de escopo e visibilidade. Ele pode começar a trabalhar esses conceitos e, mais tarde, quando tiver amadurecido, você explica o conceito com mais precisão.<br /> <br /> Na matemática, fazemos isso desde o jardim. Na física também funciona assim. A medida que os conjuntos numéricos crescem, que as definições se aprofundam, começamos a entender mais detalhes. <br /> <br /> Em suma, revisamos definições que são mais imprecisas, mas suficientes para nosso conhecimento na época, e as substituimos por outras mais precisas e adequadas ao nosso conhecimento atual. ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/414868.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/414868.java</link>
				<pubDate><![CDATA[Wed, 2 Jan 2008 09:59:48]]> GMT</pubDate>
				<author><![CDATA[ ViniGodoy]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=ViniGodoy]P[...] O que ocorre se sobrescrevermos métodos privados é acabarmos com métodos de escopos diferentes. Um deles será usado quando a porção do pai invocar, outro será usado quando a porção do filho invocar que, se houvesse polimorfismo, apenas o método do filho seria invocado.[/quote]<br /> <br /> [b]ViniGodoy[/b], <br /> segundo a Kathy: métodos privados não são herdados. Portanto, em uma herança, se uma subclasse criar um metodo com mesma assinatura do metodo contido na classe pai (porem com acesso PRIVATE), vc não está sobrescrevendo NADA, já que a subclasse desconhece tal metodo na classe pai...<br /> <br /> acho meio estranho ela cometer 2 erros "grosseiros" em um mesmo capitulo ...<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/414872.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/414872.java</link>
				<pubDate><![CDATA[Wed, 2 Jan 2008 10:06:35]]> GMT</pubDate>
				<author><![CDATA[ pardal_nb]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ A subclasse herda, mas existirão dois métodos em escopos diferentes. Um na superclasse e outro na subclasse.<br /> <br /> Um jeito fácil de demonstrar tudo isso é usar reflexão. Pegue um objeto de uma subclasse, faça reflexão em todos os níveis de sua hierarquia e você vai ver que está tudo lá, nada foi apagado. Como o Dieval ressaltou, todo objeto de uma subclasse "é uma" instância da superclasse, então, mesmo que não esteja acessível ela terá a parte privada do seu pai.<br /> <br /> O importante é não confundir a inexistência de um método ou atributo (que ocorreria se ele não fosse herdado), com a incapacidade de acessa-lo (regra de escopo).]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/414876.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/414876.java</link>
				<pubDate><![CDATA[Wed, 2 Jan 2008 10:12:52]]> GMT</pubDate>
				<author><![CDATA[ ViniGodoy]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ se no exame da SCJP cair alguma questao com este problema...<br /> <br /> o q eu marco?!<br /> 1) O q o pessoal estaá achando aki no topico (eu tb achava - ou será q ainda acho?!  <img src="http://www.guj.com.br/images/smilies/136dd33cba83140c7ce38db096d05aed.gif" border="0"> )?<br /> 2) O q a Kathy escreveu no livro ?<br /> <br />  <img src="http://www.guj.com.br/images/smilies/136dd33cba83140c7ce38db096d05aed.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/414882.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/414882.java</link>
				<pubDate><![CDATA[Wed, 2 Jan 2008 10:19:01]]> GMT</pubDate>
				<author><![CDATA[ pardal_nb]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Herda??? é visivel???<br /> na real, qual a diferença??<br /> como ja foi explicado N vezes no topico. herda, mas não pode ser usado diretamente por causa do escopo de visibilidade. isso é um detalhe que NUNCA interfereriu na minha vida. tem coisas mais importantes na linguagem p/ se preocupar.<br /> p/ a prova marque SEMPRE que não herda. o livro da Kathy é bem claro, ele não ensina Java, ensina a passar na prova, é o que ela faz e MUITO bem.<br /> <br /> []´s<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/414898.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/414898.java</link>
				<pubDate><![CDATA[Wed, 2 Jan 2008 10:50:28]]> GMT</pubDate>
				<author><![CDATA[ jgbt]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=ViniGodoy]A subclasse herda, mas existirão dois métodos em escopos diferentes. Um na superclasse e outro na subclasse.<br /> <br /> Um jeito fácil de demonstrar tudo isso é usar reflexão.[/quote]<br /> <br /> Relexão não é jeito de provar coisa nenhuma porque com reflexão vc pode até acessar métodos privados de outras classes.<br /> Reflexão viola declaradamente o encapsulamento e as formas de polimorfismo. Ela faz isso de propósito, não é um erro.<br /> Cuidado em dizer que reflexão prova alguma coisa, porque não prova. Ela foi criada exatamente para subverter as regras do compilador.<br /> <br /> O fato da reflexão acessar aos método privados prova que ela viola as regras padrão dos modificadores de visibilidade<br /> e isso significa que ela não pode ser usada para demonstrar como os modificadores funcionam. A mesma coisa se aplica a herança.<br /> Métodos que manipulam metadados não podem ser usados para provar as regras a que os dados são sujeitos. <br /> <br /> Outro exemplo: Java não permite herança multipla, mas o bytecode permite. Ferramentas de reescrita de bytecode permitem criar objetos que pertencem a duas classes simultanetamente, mas isso não significa que a linguagem java permite herança multipla.<br /> <br /> Por outro lado o fato do método da super-classe existir no bytecode da subclasse também não prova que ele é herdado. Na realidade o codigo nem está na subclasse. Apenas parece estar. Se falarmos de attributos, claro que todos estão em todos os objetos da classe, mas isso não prova que ha herança de atributos privados. <br /> <br /> Herança é apenas um mecanismo para expandir a visibilidade de métodos (aumentar o escopo). E por isso temos modificadores para restringir essa visibilidade. Herança não é um mecanismo de implementação é algo abstrato e conceptual: são  regras.<br /> Cada linguagem é livre de implementar os mecanismo como quiser. <br /> <br /> Quando se fala que A extends B estamos espandindo o escopo de classe de B para A. Por padrão tudo é herdado de B para A, ou seja, por padrão todos os métodos de B são visiveis a A. Mas e se não queremos que isso seja verdade. Como restringir a herança ? como dizer que o método xxx não pode ser visivel por A, ou seja,  como fazer para que xxx não seja herdado ? <br /> Declarar que ele é privado. Só isso. Ser privado é exactamente dizer que não é herdado. É um despropósito dizer que o que é privado é herdado quando é exactamente para impedir isso que "private" existe.<br /> <br /> Outra coisa que precisa ser lembrada é que as regras de visibilidade são reforçadas pelo compilador. Uma vez em runtime essas regras são inúteis (dai ser possível a reflexão, porque ela contece em runtime). As regras impostas pelo compilador são aquilo que compõe a linguagem java. Na [u]linguagem[/u] java coisas privadas não são herdadas. Esse é o inteiro propósito delas serem privadas! É a restrição máxima do escopo que a herança cria. Também na linguagem java não ha multipla herança de classes.<br /> Na [u]plataforma[/u] java não existem restrições. Isso permite API de Reflection e manipulação de Bytecode que fazem coisas que o programador não pode fazer usando as regras normais. Por isso que são Meta-API elas fazem coisas além (meta) do normal.<br /> Também, por isso a plataforma Java permite que outras linguagens sejam usada para geram bytecode.<br /> <br /> Enfim ,essa conversa de que coisas privadas são herdadas não faz sentido nenhum. Basear-se na API de reflexão ou na estrutura de memória não prova nada, porque essas coisas não obedecem as mesmas regras.  <br /> <br /> Resumindo:<br /> 1)[b]Linguagem Java[/b] e a [b]Plataforma Java[/b] não são a mesma coisa. Têm regras diferentes. <br /> 2)API de Reflexão e manipulação de bytecode funcionam ao nivel da plataforma e não da linguagens. (Por isso se usam classes e não um sintaxe qq especial) Como tal, não podem ser usadas para provar ou desaprovar regras da linguagem. (é como dizer que grovy não tem closures porque não existem em java. Essa conversa não tem sentido)<br /> 3) Herança é uma conjunto de regras para aumentar o escopo de visibilidade dos membros da classe. Tornar as coisas privadas é negar que esse escopro aumente para aquele membro em especifico. Herança não é uma mecanismo ou uma forma de implementação. É algo que a [u]linguagem[/u] java tem e que a [u]plataforma[/u] java implementa. A prova que as regras da linguagem e da plataforma são diferentes é que a primeira não permite herança multipla, mas a segunda sim. <br /> 4) Dizer que coisas privadas são herdadas não faz sentido, pois "private" existe apenas para negar que o membro seja herdado (i.e. seja visivel às classes filhas).<br /> <br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/415027.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/415027.java</link>
				<pubDate><![CDATA[Wed, 2 Jan 2008 14:10:15]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ So pra contradizer melhor o exemplo do CPF do pai e do filho aqui vem um exemplo:<br /> [code]<br /> class Pessoa {<br /> 	private String nome;<br /> 	public String getNome() { return nome; }<br /> 	public void setNome(String nome) { this.nome = nome; }<br /> }<br /> class Funcionario {<br /> 	private String empresa;<br /> }<br /> [/code]<br /> <br /> Nossa... Uma pessoa tem um nome... um funcionario não! ???<br /> Pra mim, a relacao de classe nao eh tipo... pai pra filho como alguns dizem.<br /> Que eu saiba a relacao é do famoso "é um".<br /> [b]Funcionario é uma Pessoa, logo Funcionario tem um atributo nome.[/b]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417475.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417475.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 03:02:03]]> GMT</pubDate>
				<author><![CDATA[ goofed]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Herança não tem nda a ver com a linguagem , herança tem a ver com conceitos de OO !<br /> <br /> Tentem desvincular o conceito OO e a linguagem .... ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417485.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417485.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 08:20:32]]> GMT</pubDate>
				<author><![CDATA[ pm]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=goofed]So pra contradizer melhor o exemplo do CPF do pai e do filho aqui vem um exemplo:<br /> [code]<br /> class Pessoa {<br /> 	private String nome;<br /> 	public String getNome() { return nome; }<br /> 	public void setNome(String nome) { this.nome = nome; }<br /> }<br /> class Funcionario {<br /> 	private String empresa;<br /> }<br /> [/code]<br /> <br /> Nossa... Uma pessoa tem um nome... um funcionario não! ???<br /> Pra mim, a relacao de classe nao eh tipo... pai pra filho como alguns dizem.<br /> Que eu saiba a relacao é do famoso "é um".<br /> [b]Funcionario é uma Pessoa, logo Funcionario tem um atributo nome.[/b][/quote]<br /> <br /> Pelo o que eu entendi...através da herança - conceito OO, funcionário tem NOME sim...mas na linguagem java Funcionario [b]não[/b] herda a propriedade nome diretamente, porém, ele acessa a propriedade através dos metodos get/set e a linguagem se encarrega de fazer essa 'assossiacao'  entre as classes..de modo que o conceito herança seja aplicado..<br /> <br /> certo pessoal?! :? ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417487.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417487.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 08:34:18]]> GMT</pubDate>
				<author><![CDATA[ pardal_nb]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Quem tiver tempo, faça download do BlueJ (<a class="snap_shots" href="http://www.bluej.org/index.html" target="_blank" rel="nofollow">http://www.bluej.org/index.html</a>)<br /> A resposta esta la !<br /> <br /> <br /> So pra adiantar, metodos privados são herdados !<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417497.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417497.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 08:55:34]]> GMT</pubDate>
				<author><![CDATA[ pm]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Acreditam que eu tava estudando o Heads First Java e li que não herdam e perguntei no Javaranch?<br /> Não herdam explicitamente, mas com métodos set e get posso acessá-los tranquilamente.<br /> <br /> Ps.: PM, o que o BlueJ tem a ver? Eu tenho ele (na verdade acho que é a melhor IDE pra se aprender java, sinceramente) e aconselho pra muita gente. Vale muito a pena pra aprender.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417508.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417508.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 09:21:30]]> GMT</pubDate>
				<author><![CDATA[ Andre Brito]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ O BlueJ é uma das melhores ferramentas para aprender OO.<br /> <br /> Cria as duas classes uma Pai e outra filho.<br /> Criar um atributo privado na Pai e depois cria uma instancia  da filho.<br /> Olha as "propriedades"(inspect) da objeto e ae vc vai ver que ele herda o atributo privado da classe Pai.<br /> <br /> simples assim !]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417584.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417584.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 10:39:08]]> GMT</pubDate>
				<author><![CDATA[ pm]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=dedejava]<br /> Não herdam explicitamente, mas com métodos set e get posso acessá-los tranquilamente.<br /> [/quote]<br /> <br /> Herdar é diferente de acessar !!<br /> Neste caso, gets e sets tem haver com polimorfismo !<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417585.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417585.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 10:40:37]]> GMT</pubDate>
				<author><![CDATA[ pm]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ <br />    O que eu fiz... criei uma classe pessoa...<br /> <br /> [code]<br /> public class Pessoa {<br /> <br /> public String nome = "Nome de Pessoa";<br /> public String sexo = "Sexo de Pessoa";<br /> private String RG;<br /> private String CPF;<br /> <br /> }<br /> [/code]<br /> <br /> depois fiz a seguinte classe estendendo de pessoa...<br /> <br /> [code]<br /> public class Carlos extends Pessoa {<br /> <br /> public Carlos(){<br /> }<br /> <br /> public static void main(String[] args){<br /> Pessoa p = new Pessoa();<br /> Carlos c = new Carlos();<br /> 		<br /> }<br /> }<br /> [/code]<br /> <br /> no eclipse em modo debug acontece o seguinte:(eu não consegui colocar a imagem mais seria isso)<br /> <br /> p = Pessoa<br /> CPF = null<br /> nome = "Nome de Pessoa"<br /> RG = null<br /> sexo = "Sexo da Pessoa"<br /> <br /> c = Carlos<br /> CPF = null<br /> nome = "Nome de Pessoa"<br /> RG = null<br /> sexo = "Sexo da Pessoa"<br /> <br /> seguindo esse raciocinio.. acho que herda sim, porém não há visibilidade, como já foi dito.<br /> <br /> é só minha humilde opnião...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417863.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417863.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 16:16:40]]> GMT</pubDate>
				<author><![CDATA[ Helio Avila]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=pm][quote=dedejava]<br /> Não herdam explicitamente, mas com métodos set e get posso acessá-los tranquilamente.<br /> [/quote]<br /> <br /> Herdar é diferente de acessar !!<br /> Neste caso, gets e sets tem haver com polimorfismo !<br /> [/quote]<br /> <br /> Polimorfismo? Por que? Não teria mais haver com encapsulamento?<br /> Eu acesso a variavel de instância pela subclasse e não pela superclasse. Mesmo se eu usasse o polimorfismo, fazendo:<br /> <br /> [code]<br /> Superclasse oi = new Subclasse();<br /> [/code]<br /> <br /> Eu poderia acessar ele, por causa do acessador, né?<br /> Teria como explicar o porquê do Polimorfismo nesse caso?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417971.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417971.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 19:13:01]]> GMT</pubDate>
				<author><![CDATA[ Andre Brito]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ ups ...é isso mesmo !!!!<br /> <br /> me desculpe e obrigado por me corrigir! <img src="http://www.guj.com.br/images/smilies/499fd50bc713bfcdf2ab5a23c00c2d62.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417994.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417994.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 20:44:02]]> GMT</pubDate>
				<author><![CDATA[ pm]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Sérgio.<br /> <br /> Eu sempre tenho muito cuidado ao falar de reflexão.<br /> <br /> E, eu estava sugerindo explicitamente que se violasse o encapsulamento usando reflexão justamente para se demonstrar como a herança de fato ocorreu, embora as regras de visibilidade restrinjam o acesso ao atributo. Somente através da reflexão (ou analisando o bytecode gerado, o que não é nada fácil) é possível demonstrar aspectos como esse.<br /> <br /> Eu concordo com você que isso não é boa prova (nem sequer é prova), e que herança é uma regra. Mas você também restringiu herança a um aspecto de implementação, que se resume em "aumentar um escopo". Herança certamente [b]não é isso[/b]. Isso é uma consequência da herança, não o seu significado. A herança implementa a regra [b]é um[/b]. Ou seja, semanticamente, um filho é um exemplo mais específico do pai. <br /> <br /> Não é possível conceber essa regra tendo um filho que é "parte de um pai", o que aconteceria se coisas não fossem herdadas. O filho pode não ter acesso ou controle sobre partes do pai, mas ele as possui.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/417997.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/417997.java</link>
				<pubDate><![CDATA[Tue, 8 Jan 2008 20:52:42]]> GMT</pubDate>
				<author><![CDATA[ ViniGodoy]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=ViniGodoy]<br /> Eu concordo com você que isso não é boa prova (nem sequer é prova), e que herança é uma regra. Mas você também restringiu herança a um aspecto de implementação, que se resume em "aumentar um escopo". Herança certamente [b]não é isso[/b]. Isso é uma consequência da herança, não o seu significado. A herança implementa a regra [b]é um[/b]. Ou seja, semanticamente, um filho é um exemplo mais específico do pai. <br /> <br /> Não é possível conceber essa regra tendo um filho que é "parte de um pai", o que aconteceria se coisas não fossem herdadas. O filho pode não ter acesso ou controle sobre partes do pai, mas ele as possui.[/quote]<br /> <br /> O aumento do escopo não é um dado de implementação. É regra da linguagem. É graças a ele que pode ser feito shadowing. A implementação segue regras que têm que respeitar as regras da linguagem, mas como já disse, a JVM não força essas regras. Para outras linguagens, os compiladores podem estipular outras regras de escopo diferentes. <br /> <br /> Herança  não passa de um tipo especial de polimorfismo. Todo o polimorfismo é baseado em escopo. Herança , não é portanto diferente. As outras formas de polimorfismo adicionam capacidades paralelas enquanto herança cria uma hierarquia. É porque ele cria uma hierarquia que a condição é-um se aplica. Mas essa condição não define herança. O que define herança é apenas e só o aumento do escopo. Voce pode extender classes com outras que não "são um". Isso não é sempre errado. Por exemplo, Stack extends Vector. Stack não é um vector, mas ele herda as mesmas operações.  O conceito de herança como "é-um" é superficial e induz ao erro de pensar que é por isso que herança existe. Não é verdade. <br /> <br /> O tem-um e é-um são formas de construir modelos de objetos. Sua implementação pode ser muito diferente conforme o paradigma que seguimos. Normalmente é-um pede herança, mas muitas vezes isso cria problemas (o famoso caso da pessoa fisica e juridica que herdam de pessoa. é-um parece ser a melhor forma de modelar, mas não é). A directiva tem-um pode ser implementa de várias formas desde um simples atributo até uma coleção com um unico elemento. As diretivas de modelagem têm formas padrão de se expressagem em java, e herança é a mais usada para é-um. Mas não tem sempre que ser assim. <br /> <br /> Enfim, a directiva é-um é algo que existe em modelagem e que pode ser implementada com uso de herança, mas herança não foi criada apenas para expressar relações é-um. Ela foi criada para reaproveitar codigo numa forma hierarquica que se traduz por aumentar o escopo dos membros da classe a outra classes particular (a filha). O aumento do escopo é uma simples regra de visibilidade que o compilador força mas a JVM não controla.<br /> Nem Herança nem o aumento do escopo são detalhes de implementação. Ou posto de outra forma: herança é o nome de uma forma especifica de aumento de escopo. Shadowing seria outra, por exemplo. O compilador entende essas regras e as força (compiladores diferentes, forçam regras diferentes). <br /> A JVM apenas "dá-à-manivela" e faz tudo isso funcionar.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418092.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418092.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 09:20:30]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Já sei porque estamos discutindo. Porque existem várias definições de herança. E nenhuma delas é mais correta ou adequada, porque elas dependem da ótica e do problema sendo analisados. Resolvi procurar na internet e achamos a definição, clássica, o Booch, que é mais parecida com a minha. Por outro lado, a definição de LaLonde, é muito próxima da sua. Só para citar grandes nomes da OO.<br /> <br /> Herança, pode ser encarada apenas do ponto de vista da análise, que está preocupada mais com a relação entre os tipos e com o significado dessa relação do que aspectos de implementação. O exemplo da PessoaFisica e PessoaJurica, mostra uma relação de duas classes parecidas, mas que na verdade são entidades distintas. Por isso, não deviam pertencer a mesma hierarquia, ou então, não num nível tão baixo.  <br /> <br /> Então, como aqui é o GUJ e é do Java que estamos falando, resolvi procurar a definição de herança segundo a Sun. Infelizmente, no site da Sun a definição é ambígua o suficiente para dar margem a discussão (a boa e velha "herança é quando um objeto herda de outro"):<br /> <a class="snap_shots" href="http://java.sun.com/docs/books/tutorial/java/concepts/inheritance.html" target="_blank" rel="nofollow">http://java.sun.com/docs/books/tutorial/java/concepts/inheritance.html</a><br /> <br /> Mas a definição de que herança é só uma forma de aumentar o escopo também é fraca. Você mesmo falou: "herança é o nome de uma forma [b]especifica[/b] de aumento de escopo". E o que torna essa forma específica? Justamente a criação de herarquias de classes. Qualquer hierarquia? Também não, classes friend (do C++), por exemplo, não formam herança e aumentam escopo. Classes onde se faz: class x : private Y, também não formam herança (formam relação "é implementado em termos de") e também aumentam escopo. <br /> <br /> Então, o que é específico nessa forma de aumento de escopo?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418148.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418148.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 10:08:16]]> GMT</pubDate>
				<author><![CDATA[ ViniGodoy]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=Lintz_net]Cara, eu não me lembro onde, mas eu já li que os membros private são herdados, porém, não são acessados... só não lembro onde foi que eu li.[/quote]<br /> <br /> Simples... Cria uma classe com um atributo privato e tenta utilizar este atributo em outra classe que a herda. Resultado?<br /> <br /> Erro de compilação!!!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418163.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418163.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 10:27:48]]> GMT</pubDate>
				<author><![CDATA[ falvesti]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Herança deveria ser estudada do ponto de vista da OO...senão amanhã aparece uma nova linguagem orientada a objetos e vão dar a sua própria definição de Herança? Estranho...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418178.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418178.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 10:38:32]]> GMT</pubDate>
				<author><![CDATA[ felipeguerra]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ PQP... catzo.<br /> <br /> Só para compreender essa m.. toda que estão fazendo aqui.<br /> <br /> Se eu tenho uma classe A e em baixo dela eu coloco um trangulo e outras classes abaixo desse triangulo (naquele diagrama de classe da UML que ninguém aqui sabe para que serve). Qual a idéia dessas classes?<br /> <br /> Na idade da pedra da OO (Coad e Yourdon) chamavam isso de especialização, que era a forma de representar casos especiais ou de especializar uma superclasse. Como eu posso especilizar alguma coisa e ao mesmo tempo não ser essa coisa ou não ter partes dela.<br /> <br /> Ou como eu posso passar no teste É UM se eu não tiver TODAS as características dessa coisa.<br /> <br /> sinceramente senhores se a superclasse for constituída de um bit e eu criar uma subclasse que adicione outro bit, não importa a visibilidade do bit da superclasse, minha subclasse SEMPRE SERÁ (SER e NÃO TER) constituída por dois bits.<br /> <br /> fw<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418455.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418455.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 15:20:08]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Pessoal esse tópico tá rendendo heim...<br /> E vcs falam, falam e não saem do lugar. Arrumaram diversas maneiras <br /> de dizer a msm coisa.<br /> <br /> Na minha humilde opinião e através de tudo que foi dito pude concluir que todas as variáveis e metodos são herdados de <br /> uma classe, mas as variaveis [b]"private" [/b]não são acessiveis diretamente, mas somente pelos metodos set e get. Então se uma determinada variavel<br /> não pode ser acessada e modificada por uma outra classe no caso da <br /> herança devemos repensar o encapsulamento da variavel.<br /> <br /> Seria isso q eu penso  <img src="http://www.guj.com.br/images/smilies/499fd50bc713bfcdf2ab5a23c00c2d62.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418456.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418456.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 15:29:15]]> GMT</pubDate>
				<author><![CDATA[ KassiPretti]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ qualquer coisa private nao herda,sendo variavel ou metodo,se quiserem modificar uma variavel private,crie um metodo publico,logico o metodo na classe pai onde c encontar a variavel vlw!!!!!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418518.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418518.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 16:42:15]]> GMT</pubDate>
				<author><![CDATA[ dicabeca]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ num herda naum,..]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418527.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418527.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 16:54:30]]> GMT</pubDate>
				<author><![CDATA[ soudaniel_01]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=dicabeca]qualquer coisa private nao herda,sendo variavel ou metodo,se quiserem modificar uma variavel private,crie um metodo publico,logico o metodo na classe pai onde c encontar a variavel vlw!!!!![/quote]<br /> <br /> Logico que herda....pq vcs não fazem o download do BlueJ ou olhem do debug de qq IDE que o atributo privado do pai pertence ao filho, isto é, foi herdado.<br /> <br /> Herança é diferente de visibilidade(acesso)<br /> <br /> pq esta tão dificil de entender ?<br /> <br /> <br /> Segue os prints para os mais preguiçosos<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418529.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418529.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 16:55:34]]> GMT</pubDate>
				<author><![CDATA[ pm]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Olhem o atributo "nome"....]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418532.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418532.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 17:01:42]]> GMT</pubDate>
				<author><![CDATA[ pm]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=ViniGodoy]Já sei porque estamos discutindo. [/quote]<br /> <br /> Estamos conversando  <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0"> <br /> <br /> [quote]<br /> Mas a definição de que herança é só uma forma de aumentar o escopo também é fraca. Você mesmo falou: "herança é o nome de uma forma [b]especifica[/b] de aumento de escopo". E o que torna essa forma específica? <br /> Justamente a criação de herarquias de classes. Qualquer hierarquia? [/quote]<br /> <br /> Só ha uma hierarquia em java. <br /> Então, herança é apenas uma forma de aumentar o escopro do membros de uma classe que implicam que a classe derivada pertence na hirarquia da original. <br /> <br /> [quote]<br /> Também não, classes friend (do C++), por exemplo, não formam herança e aumentam escopo. Classes onde se faz: class x : private Y, também não formam herança (formam relação "é implementado em termos de") e também aumentam escopo. <br /> [/quote]<br /> <br /> O que vc está dizendo aqui é que existem outras formas de aumentar o escopo, que não são a herança. Certo. Como eu disse: em java, shadowing também é uma forma de aumentar o escopo. <br /> Por existirem várias formas de aumentar o escopo ( static seria outra)  é que eu disse que a herança é uma forma especifica. É uma entre outras.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418539.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418539.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 17:09:38]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ na minha opinião não herda.<br /> Pode ocorrer coisas estranhas como o reflections<br /> um método publico chamar um privado e assim ter um pseudo acesso, mas isso não é a definição.<br /> É como herança múltipla, não tem, mas vc pode contornar.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418547.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418547.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 17:15:07]]> GMT</pubDate>
				<author><![CDATA[ fabioissamu]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Eu estou ficando realmente surpreso com a profundidade da capacidade lógica de pensar...<br /> <br /> Se for considerada uma classe pai que tenha uma propriedade com o modificador de acesso private e um método que lê essa propriedade, quando eu estender essa classe e fizer o uso desse método herdado, a propriedade que preserva a informação (declarada na classe pai como private) estará alocada na memória do além e naturalmente não fará parte do objeto que é uma instância da classe filha e quando um objeto dessa subclasse fizer uma leitura através desse método get, a VM do java irá romper a barreira do material e obter uma informação do além e que naturalmente NÃO FARÁ PARTE DO OBJETÖ...<br /> <br /> Vamos continuar a [i]conversar[/i] sobre a policromia dos cristais partidos, mesmo com quem entra, não lê os posts anteriores e repete hipoteses já derrubadas e não fundamentadas...<br /> <br /> vw <img src="http://www.guj.com.br/images/smilies/908627bbe5e9f6a080977db8c365caff.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418575.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418575.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 17:39:51]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Interessante... pensando que, todo filho é o pai de uma forma especializada logicamente a resposta teria de ser sim... acredito que as referências que dizem que não herda seja pra facilitar o entendimento do modificador de acesso apenas, não levando em conta a essencia da coisa... <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418576.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418576.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 17:39:53]]> GMT</pubDate>
				<author><![CDATA[ paulovittor23]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Vc consegue chamar o método, mas a definição é que não herda.<br /> [code]<br /> public class SuperPrivate {<br /> 	public static void main(String args[]){<br /> 		Filha a = new Filha();<br /> 		a.acessaMetodoPrivado();<br /> 	}<br /> }<br /> class SuperClass{<br /> 	public void metodoPublico(String arg){<br /> 		metodoPrivado(arg);<br /> 	}<br /> 	private void metodoPrivado(String arg){<br /> 		System.out.println("Método privado chamado arg='"+arg+"'");<br /> 	}<br /> }<br /> class Filha extends SuperClass{<br /> 	public void acessaMetodoPrivado(){<br /> 		super.metodoPublico("teste");<br /> 	}<br /> }[/code]<br /> Por exemplo, vc herda o monitor da pessoa?<br /> Não, porém vc consegue modificar o que é desenhado nele...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418586.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418586.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 17:59:49]]> GMT</pubDate>
				<author><![CDATA[ fabioissamu]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=Dieval Guizelini]Se for considerada uma classe pai que tenha uma propriedade com o modificador de acesso private e um método que lê essa propriedade, quando eu estender essa classe e fizer o uso desse método herdado, a propriedade que preserva a informação (declarada na classe pai como private) estará alocada na memória<br /> [/quote]<br /> <br /> Memoria = JVM = Plataforma = Implementação<br /> Herança = Regra = Linguagem = Teoria<br /> <br /> Linguagem é diferente de plataforma. O que acontece na memoria não tem nada a ver com a linguagem.<br /> A prova disso é que muitas linguagens compilam o mesmo bytecode e funcionam na mesma JVM usando a mesma memoria.  É dificil de aceitar isto ? Acho que não.<br /> <br /> Dado que o que acontece na memoria é completamente inutil para saber se ha herança ou não , porque perder tempo com esse exemplo ? <br /> <br /> O livros não afirmam que membros privados não são herados simplesmente porque querem se didáticos, eles dizem isso porque é a verdade.  A prova é que dada uma classe que extende outra vc não consegue acessar nenhum dos membros privados da classe hierarquicamente superior. <br /> <br /> Se vc acessa um método publico i ou protegido  da classe pa que por sua vez acessa a variável privada , tudo bem. Isso não prova que a clase filha tem acesso à variável privada.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418649.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418649.java</link>
				<pubDate><![CDATA[Wed, 9 Jan 2008 22:29:57]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=sergiotaborda][quote=Dieval Guizelini]...[/quote]<br /> <br /> Memoria = JVM = Plataforma = Implementação<br /> Herança = Regra = Linguagem = Teoria<br /> <br /> Linguagem é diferente de plataforma. O que acontece na memoria não tem nada a ver com a linguagem.<br /> A prova disso é que muitas linguagens compilam o mesmo bytecode e funcionam na mesma JVM usando a mesma memoria.  É dificil de aceitar isto ? Acho que não.<br /> [/quote]<br /> <br /> Depende, em que você queira aplicar, quando falamos em Java, normalmente estamos falando do conjunto todo.<br /> Com relação a sua definição: "Herança = Regra = Linguagem = Teoria", poderia ser melhor definida que "Herança é conceito definido na OO" e a interpretação dos engenheiros da SUN com relação a este conceito é exclusivamente implementado com o uso da palavra chave extends, e conforme as especificações do JCP para as VM.<br /> <br /> [quote=sergiotaborda]<br /> Dado que o que acontece na memoria é completamente inutil para saber se ha herança ou não , porque perder tempo com esse exemplo ? <br /> [/quote]<br /> Infelizmente não posso concordar, apenas com um conhecimento de como a ferramenta manipula a memória, IO e etc, pode-se compreender vários conceitos. Apenas para citar, que é outro ponto polêmico no Java, a passagem de parâmetros por valor ou referência.<br /> <br /> [quote=sergiotaborda]<br /> O livros não afirmam que membros privados não são herados simplesmente porque querem se didáticos, eles dizem isso porque é a verdade.  A prova é que dada uma classe que extende outra vc não consegue acessar nenhum dos membros privados da classe hierarquicamente superior. <br /> <br /> Se vc acessa um método publico i ou protegido  da classe pa que por sua vez acessa a variável privada , tudo bem. Isso não prova que a clase filha tem acesso à variável privada.[/quote]<br /> <br /> Como docente não posso "desconsiderar" a literatura normalmente aceita pela sociedade, mas como pesquisador da área de desenvolvimento eu posso afirmar dois grandes problemas com a literatura técnica, principalmente na área da informática:<br /> 1. Os tradutores normalmente não possuem conhecimento da área de informática, e quando possuem são fracos. O maior exemplo desse problema, talvez seja o livro de Inteligência Artificial do Norvig e Russellque quase conseguiu acabar com a área de IA no Brasil no fim da década de 80 e início dos anos 90.<br /> 2. O conceito de "aspectos didáticos" associados aos livros que se destinam a treinamentos ou preparação para certificações são em sua maioria ruins e apresentam metodologias que já não são mais tão utilizadas no sistema educacional do Brasil. Principalmente as metodologias baseadas em Piaget. A exemplo o livro da Kathy.<br /> <br /> Agora, focando no conceito de OO, de herança, observe que quando uma subclasse executar qualquer código que faça uso (ou é dependente) de uma propriedade declarada com private, ela não deveria funcionar se não tivesse herdado essa característica. Logo, volto a afirmar que toda classe especializada de outra classe através do recurso de herança, seja em Java ou em qualquer linguagem do paradgima Orientado a Objetos, terá todos os recursos da classe pai.<br /> <br /> fw<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418927.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418927.java</link>
				<pubDate><![CDATA[Thu, 10 Jan 2008 11:19:42]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote] <br /> ViniGodoy wrote<br /> Existe uma diferença entre a existência de um atributo e a sua visibilidade.<br /> <br /> O que o Dieval quer dizer é que, uma classe filha herdará um atributos e métodos do pai, no sentido de que, essas estruturas existirão, serão alocadas em memória, e serão usadas pelos mecanismos internos da classe. Afinal de contas, o filho é um objeto da classe pai e nada mais natural do que ele ter absolutamente todos os atributos do pai.<br /> <br /> Entretanto, graças às regras de escopo, esses atributos e métodos não serão visíveis na classe filha. Daí a confusão. Assim, eles são herdados (pq existem e são acessados indiretamente pelos filhos), mas não são visíveis, estão fora do escopo da classe filha.<br /> <br /> Por isso, não é possível fazer polimorfismo de métodos privados, por exemplo. O que ocorre se sobrescrevermos métodos privados é acabarmos com métodos de escopos diferentes. Um deles será usado quando a porção do pai invocar, outro será usado quando a porção do filho invocar que, se houvesse polimorfismo, apenas o método do filho seria invocado. [/quote]<br /> <br /> <br /> Pra mim ViniGodoy foi muito feliz nessa resposta, o fato de não ser visivel naum quer dizer que não foi herdado.<br /> Tá tudo explicado ai <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/418954.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/418954.java</link>
				<pubDate><![CDATA[Thu, 10 Jan 2008 11:49:55]]> GMT</pubDate>
				<author><![CDATA[ francislon]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Boa tarde colegas !<br /> <br /> Nem vou dar minha humilde opinião no meio de tantos pensadores e filósofos !<br /> <br /> Mas juro que gostaria de saber o que a Kathy diria sobre essa frase:<br /> <br /> [i]"p/ a prova marque SEMPRE que não herda. o livro da Kathy é bem claro, ele não ensina Java, ensina a passar na prova, é o que ela faz e MUITO bem. "[/i]<br /> <br /> <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"><br /> <br /> []s]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419110.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419110.java</link>
				<pubDate><![CDATA[Thu, 10 Jan 2008 15:01:36]]> GMT</pubDate>
				<author><![CDATA[ Zeed01]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Uau... <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"> <br /> <br /> Quando criei este post não pensei q daria tanta repercussão..<br /> <br /> Quando eu acho q já formei a minha opinião sobre o assunto, vem um post e muda tudo...  <img src="http://www.guj.com.br/images/smilies/136dd33cba83140c7ce38db096d05aed.gif" border="0"> <br /> <br /> (por eqt estou do lado que [b]não[/b] herda - JVM, acessa. E, se analisar pelo conceito de OO herda.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419126.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419126.java</link>
				<pubDate><![CDATA[Thu, 10 Jan 2008 15:17:42]]> GMT</pubDate>
				<author><![CDATA[ pardal_nb]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Boa tarde colegas !<br /> <br /> Hahahahahaha !!!<br /> <br /> Eu quero a cueca do meu pai !<br /> <br /> Essa foi a melhor de todas !<br /> <br /> []s]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419145.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419145.java</link>
				<pubDate><![CDATA[Thu, 10 Jan 2008 15:32:58]]> GMT</pubDate>
				<author><![CDATA[ Zeed01]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=Dieval Guizelini]<br /> [quote=sergiotaborda]<br /> Dado que o que acontece na memoria é completamente inutil para saber se ha herança ou não , porque perder tempo com esse exemplo ? <br /> [/quote]<br /> Infelizmente não posso concordar, apenas com um conhecimento de como a ferramenta manipula a memória, IO e etc, pode-se compreender vários conceitos. <br /> [/quote]<br /> <br /> Você defende, portanto, que o que está em memoria reflete sem equivocos as regras da linaguem java ?<br /> Vc não está pensando no problema como um todo. <br /> <br /> Vc diz que se a classe A tem o atributo z então B que estende A também tem. A sua justificativa é que no debug (que é feito por uma ferramenta de runtime ) z aparece num objecto do tipo B.<br /> <br /> Se A também tiver um atributo y estático ele também irá aparece em cada objecto de B. Contudo , isto não significa que y existe em cada objecto de B. Como pode um atributo (um só) pertencer simultaneamente a N objetos diferentes ?<br /> <br /> A resposta é simples. A ferramente de debug mostra o estado do objeto, mas isso não significa que ela é limitada pelos atributos do objeto. Ela mostra tudo o que existir. Independentemente de onde.<br /> <br /> Por outro lado , quando diz que z existe em B isso não é verdadeiro. z existe em A e B é uma expanção de A.<br /> É como fazer um circulo à volta da são paulo e dizer que são paulo pertence ao circulo. Mas se eu fizer um circulo maior em torno do primeiro, são paulo continua petencendo ao circulo menor. Ele apenas está dentro do maior, porque este contém o menor. Estar "incluso" é diferente de "existir em"<br /> <br /> Se aceitarmos o argumento de que z existe em B porque existe em A, porque a ferramente assim mostra, temos que aceitar que y existe em cada objecto do tipo de B, porque a ferramenta assim mostra. E isso é um absurdo porque y é estático (ele não pertence aos objetos). Logo, não podemos aceitar o argumento baseado em ferramentas de debug.<br /> <br /> Os implementadores da ferramenta de debug poderiam ter escolhido esconder coisas estáticas. Seria mais correto do ponto de vista teorico, mas seria absurdo do ponto de vista prático. Por isso que qualquer coisas que seja uma ferramenta , ou uma API que se baseia no estado da memoria em runtime não pode ser argumento para provar o que é regra em tempo de compilação. O fato de membros privados não serem visiveis em tempo de compilação é que é a regra. E isso que significa "membros privados não são herados" ou seja, "a visibilidade de membros privados não se estende a subclasses". Privados = "só dela".<br /> <br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419331.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419331.java</link>
				<pubDate><![CDATA[Thu, 10 Jan 2008 18:07:17]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Herda mas n eh possivel ter acesso.<br /> <br /> O objeto n passa de uma referencia na memoria, portanto é herdado.<br /> <br /> E isso nao vai levar em lugar algum.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419412.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419412.java</link>
				<pubDate><![CDATA[Thu, 10 Jan 2008 22:43:26]]> GMT</pubDate>
				<author><![CDATA[ Gauss]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=sergiotaborda][quote=Dieval Guizelini]Se for considerada uma classe pai que tenha uma propriedade com o modificador de acesso private e um método que lê essa propriedade, quando eu estender essa classe e fizer o uso desse método herdado, a propriedade que preserva a informação (declarada na classe pai como private) estará alocada na memória<br /> [/quote]<br /> <br /> Memoria = JVM = Plataforma = Implementação<br /> Herança = Regra = Linguagem = Teoria<br /> <br /> Linguagem é diferente de plataforma. O que acontece na memoria não tem nada a ver com a linguagem.<br /> A prova disso é que muitas linguagens compilam o mesmo bytecode e funcionam na mesma JVM usando a mesma memoria.  É dificil de aceitar isto ? Acho que não.<br /> <br /> Dado que o que acontece na memoria é completamente inutil para saber se ha herança ou não , porque perder tempo com esse exemplo ? <br /> <br /> O livros não afirmam que membros privados não são herados simplesmente porque querem se didáticos, eles dizem isso porque é a verdade.  A prova é que dada uma classe que extende outra vc não consegue acessar nenhum dos membros privados da classe hierarquicamente superior. <br /> <br /> Se vc acessa um método publico i ou protegido  da classe pa que por sua vez acessa a variável privada , tudo bem. Isso não prova que a clase filha tem acesso à variável privada.[/quote]<br /> <br /> Eu concordo plenamente com você. Detalhes de implementação da linguagem não nos interessa e até podem mudar entre versões, sem impactar na linguagem.<br /> Um outro exemplo é o compartilhamento de métodos pelos objetos da mesma classe.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419735.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419735.java</link>
				<pubDate><![CDATA[Fri, 11 Jan 2008 13:51:10]]> GMT</pubDate>
				<author><![CDATA[ Schuenemann]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=sergiotaborda]<br /> Vc diz que se a classe A tem o atributo z então B que estende A também tem. A sua justificativa é que no debug (que é feito por uma ferramenta de runtime ) z aparece num objecto do tipo B.<br /> <br /> Se A também tiver um atributo y estático ele também irá aparece em cada objecto de B. Contudo , isto não significa que y existe em cada objecto de B. Como pode um atributo (um só) pertencer simultaneamente a N objetos diferentes ?<br /> [/quote]<br /> Eu não disse que a herança é justificada pela representação da informação que o debug mostra e sim pelo fato que de a classe B ao estender A, ela terá todos os recursos (propriedades e métodos) independentes da visibilidade dos mesmos.<br /> <br /> [quote=sergiotaborda]<br /> A resposta é simples. A ferramente de debug mostra o estado do objeto, mas isso não significa que ela é limitada pelos atributos do objeto. Ela mostra tudo o que existir. Independentemente de onde.<br /> <br /> Por outro lado , quando diz que z existe em B isso não é verdadeiro. z existe em A e B é uma expanção de A.<br /> É como fazer um circulo à volta da são paulo e dizer que são paulo pertence ao circulo. Mas se eu fizer um circulo maior em torno do primeiro, são paulo continua petencendo ao circulo menor. Ele apenas está dentro do maior, porque este contém o menor. Estar "incluso" é diferente de "existir em"<br /> [/quote]<br /> <br /> Eu acredito que esse é o ponto principal da questão e onde surge a divergência de opniões, o fato de um círculo ter outro não significa que É o mesmo.<br /> O problema não está no fato de eu ter duas classes que TENHAM propriedades iguais, exemplo:<br /> [code]public class A {<br />    public int a;<br /> }<br /> public class B {<br />    public int a;<br /> }[/code]<br /> Neste caso, não existe nenhuma relação entre estas classes, são classes distintas. Mas que possuem (usando o seu termo, contém) uma propriedade do mesmo tipo de informação e com o mesmo identificador. Mas não são a mesma coisa, logo:<br /> [code]B b = new B();<br /> System.out.println( b instanceof A); // sempre será falso[/code]<br /> Agora, quando temos:<br /> [code]public class A {<br />    modificador_qualquer int a;<br /> }<br /> public class B extends A {<br /> }[/code]<br /> independentemente do modificador, sempre as instâncias de B produzirão verdadeiro no teste abaixo:<br /> [code]B b = new B();<br /> System.out.println( b instanceof B); // sempre será falso[/code]<br /> E este é ponto para mim, ou seja, ter uma classe herdada de outra em java, implica que:<br /> 1) ela sempre passará no teste É UM;<br /> 2) ela sempre terá os recursos da classe pai, independentemente de visibilidade e da disponibilidade desse recursos para a própria subclasse ou classes terceiras.<br /> <br /> Observe novamente que herança não está associada a idéia de pertinência ou de conter. <br /> <br /> [quote=sergiotaborda]<br /> Se aceitarmos o argumento de que z existe em B porque existe em A, porque a ferramente assim mostra, temos que aceitar que y existe em cada objecto do tipo de B, porque a ferramenta assim mostra. E isso é um absurdo porque y é estático (ele não pertence aos objetos). Logo, não podemos aceitar o argumento baseado em ferramentas de debug.<br /> [/quote]<br /> Novamente o seu exemplo deixa claro que você está misturando o conceito de pertinência com o conceito de existência.<br /> quando um recurso é declarado como static, esse recurso pertence a classe e está associado a todos os objetos dessa classe. Se eu criar uma subclasse, essa subclasse será também associada ao mesmo recurso. Na prática, estamos falando de uma única região de memória compartilhado por todos os objetos.<br /> <br /> [quote=sergiotaborda]<br /> Os implementadores da ferramenta de debug poderiam ter escolhido esconder coisas estáticas. Seria mais correto do ponto de vista teorico, mas seria absurdo do ponto de vista prático. Por isso que qualquer coisas que seja uma ferramenta , ou uma API que se baseia no estado da memoria em runtime não pode ser argumento para provar o que é regra em tempo de compilação. O fato de membros privados não serem visiveis em tempo de compilação é que é a regra. E isso que significa "membros privados não são herados" ou seja, "a visibilidade de membros privados não se estende a subclasses". Privados = "só dela".<br /> [/quote]<br /> <br /> Então, para você a herança é uma regra implementada na etapa de compilação? Os objetos existem na fase de compilação?<br /> As regras de visibilidade são validadas também em tempo de compilação, mas não somente nesta etapa. A herança e sua implementação é uma definida no nível de classe, mas as conseqüências, ou sua real implementação ocorre em tempo de execução tanto no nível de classe como de objeto.<br /> Enquanto o código não estiver em execução, a memória não será alocada, a classe não receberá os recursos da classe pai e assim por diante.<br /> <br /> fw]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419759.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419759.java</link>
				<pubDate><![CDATA[Fri, 11 Jan 2008 14:22:21]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=Schuenemann][...]<br /> Eu concordo plenamente com você. Detalhes de implementação da linguagem não nos interessa e até podem mudar entre versões, sem impactar na linguagem.<br /> Um outro exemplo é o compartilhamento de métodos pelos objetos da mesma classe.[/quote]<br /> <br /> E segundo o seu exemplo, o java poderia deixar de separar a memória em heap e stack e considerar tudo pertencente ao heap ou ao stack (implementando-os conforme as regras padrões de compiladores) e continuariamos a ter o mesmo funcionamento na passagem de parâmetros e etc.<br /> <br /> Da mesma forma ele poderia mudar a quantidade de bytes de seus tipos primitivos, digamos que um int passa de 4 para 8 bytes, e como não é necessário conhecer a implementação eu não terei nenhuma conseqüência para as minhas aplicações, para os estudos de viabilidade, etc<br /> <br /> Com relação a sua opnião da relevância da forma que uma linguagem implementa determinados recursos, vamos esperar um pouco e ver o quanto tempo ela dura. É a mesma coisa de dizer que todos os sistemas de arquivos são iguais e podem ser usados para qualquer solução em qualquer situação, ou que não importa como os SO são implementados...<br /> <br /> Com relação aos métodos compartilhados, é também um padrão de implementação de compiladores, poderiamos citar aqui as DLL, os códigos nativos, os recursos de JNDI e etc, mas nada disso teria relevância para os dois conceitos em discusão, que são: herança e visibilidade dos recursos.<br /> <br /> fw]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419771.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419771.java</link>
				<pubDate><![CDATA[Fri, 11 Jan 2008 14:40:16]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Eu acho que vcs estão com tanta dúvida pois estão confundindo herança com visibilidade. Temos que definir as duas coisas separadamente para entender melhor a questão das variaveis privadas.<br /> Na verdade elas são herdadas, mas não serão visiveis ao menos se utilizarmos os métodos publics set e get delas.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419787.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419787.java</link>
				<pubDate><![CDATA[Fri, 11 Jan 2008 14:52:46]]> GMT</pubDate>
				<author><![CDATA[ KassiPretti]]></author>
			</item>
			<item>
				<title>Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Caralho, voces tao discutindo isso AINDA!?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419855.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419855.java</link>
				<pubDate><![CDATA[Fri, 11 Jan 2008 16:06:02]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=Dieval Guizelini][quote=sergiotaborda]<br /> Vc diz que se a classe A tem o atributo z então B que estende A também tem. A sua justificativa é que no debug (que é feito por uma ferramenta de runtime ) z aparece num objecto do tipo B.<br /> <br /> Se A também tiver um atributo y estático ele também irá aparece em cada objecto de B. Contudo , isto não significa que y existe em cada objecto de B. Como pode um atributo (um só) pertencer simultaneamente a N objetos diferentes ?<br /> [/quote]<br /> Eu não disse que a herança é justificada pela representação da informação que o debug mostra e sim pelo fato que de a classe B ao estender A, ela terá todos os recursos (propriedades e métodos) independentes da visibilidade dos mesmos.<br /> [/quote]<br /> <br /> Mas como vc prova que tem ? Esse é o ponto. <br /> Várias pessoas apresentam a prova usando mecanismos de debug, uso de memória, profilers, etc... ou seja, ferramentas de runtime que interagem com a JVM. <br /> <br /> Acho que ficou claro que esse tipo de ferramentas não pode provar coisa alguma sobre a estrutura dos objetos em memoria. Elas mostram aquilo para que foram criadas e não a estrutura real na memoria.<br /> <br /> 1)Para que se aceite que B tem todos os recursos de A é necessário provar isso. Sendo que o uso de ferramentas não prova isso, não se pode (agora/ainda) aceitar que B tem todos os recursos de A.<br /> <br /> 2)Mesmo aceitando que B tem os recursos de A isso não acontece porque A é copiando para B e acrecentado de mais coisas. Acontece porque B é A. Sendo assim, tudo aquilo que é de A é de B. Tudo, exceto o que é apenas de A, obvio. <br /> <br /> [quote]<br /> Agora, quando temos:<br /> [code]public class A {<br />    modificador_qualquer int a;<br /> }<br /> public class B extends A {<br /> }[/code]<br /> independentemente do modificador, sempre as instâncias de B produzirão verdadeiro no teste abaixo:<br /> [code]B b = new B();<br /> System.out.println( b instanceof B); // sempre será falso[/code]<br /> E este é ponto para mim, ou seja, ter uma classe herdada de outra em java, implica que:<br /> 1) ela sempre passará no teste É UM;<br /> [/quote]<br /> <br /> Objectos do tipo B sempre são objetos do tipo A. Aqui não ha dúvidas. Isso é herança: construir tipos a partir de outros. O ponto em causa é são os membros privados de A.<br /> <br /> [quote]<br /> 2) ela sempre terá os recursos da classe pai, independentemente de visibilidade e da disponibilidade desse recursos para a própria subclasse ou classes terceiras.<br /> [/quote]<br /> <br /> Não, não terá. E é isso que tem que ser provado. <br /> Entende que se eu declaro algo private em A e isso existe em B então não é mais private em A; Não é mais interno a A, é agora compatilhado com B. A noção que algo privado pertence a algo mais que o seu proprio dono é absurda. Ela fere o conceito de encapsulamento que é o conceito mater em OO. As coisas são feitas privadas exactamente para que não existam em outros lugaes.<br /> <br /> Mas o que significa "existir" em OO. Nada. <br /> As coisas não "existem" elas são definidas em alguma lugar, e acessadas em outro. Ou melhor, elas são criadas e acessadas em u detirmado escopo. Falamos que existe como forma de simplificar, mas na realidade isso não existe. <br />  <br /> [quote]<br /> Então, para você a herança é uma regra implementada na etapa de compilação? Os objetos existem na fase de compilação?<br /> [/quote]<br /> <br /> A herança é entre classes (tipos), logo não ha necessidade de objetos e portanto não ha necessidade de runtime.<br /> <br /> As regras de herança não são implementadas na compilação, elas ão forçadas na compilaçao.<br /> <br /> [quote]<br /> As regras de visibilidade são validadas também em tempo de compilação, mas não somente nesta etapa. <br /> [/quote]<br /> <br /> Sim, somente nessa etapa.<br /> Em runtime elas não são verificadas porque elas não existem em runtime. É por isso que a API de reflection funciona. E ai as regras são forçadas via API e passando pelo SecurityManager. Se o SecurityManager travar o acesso a coisas privadas vc não consegue acessar e ponto final.<br /> Como eu já disse a JVM não força regras ela faz as coisas funcionar. Quem força regras é o compilador porque é no compilador que se define uma linguagem.  <br /> <br /> [quote]<br /> A herança e sua implementação é uma definida no nível de classe, mas as conseqüências, ou sua real implementação ocorre em tempo de execução tanto no nível de classe como de objeto.<br /> Enquanto o código não estiver em execução, a memória não será alocada, a classe não receberá os recursos da classe pai e assim por diante.<br /> [/quote]<br /> <br /> O ponto é esse. A classe receber os recursos da classe pai não significa que ha herança. Significa apenas que o estado do objeto precisa daquelas variáveis. Lembre-se que os métodos nem sequer existem na memoria. <br /> <br /> Resumindo:<br /> 1)Herança é um conceito teorico que visa produzir tipos com base em outros existentes. Para isso ela aumenta o escopo da definição dos membros da classe. <br /> 2)Nem sempre tudo o que é de uma classe pode ser passado aos filhos. Por isso existe uma restrição que permite declarar uma variável apenas no escopo da classe onde ele é definida de forma que ela não pertence ao escopo da classe filha. Deste modo a classe filha não pode acessa essa variável. O uso de "private" garante, implica e foi criado para retirar a variável da herança. Serve para dizer "filho, isto, tu não herdas".<br /> 3)Se a variável compoe o estado do objeto e o objeto é algo na memoria, provavelmente a memoria contém todas as variáveis privadas da hierarquia da classe do objeto, mas não ha forma de provar isso. Ferramentas de debug e afins não servem para provar a estrutura de memoria que a JVM usa (alías esse é todo o objetivo da JVM : encapsular a implementação)<br /> 4) Mesmo que as ferramentas mostrassem a real estrutura, e mesmo que essa estrutura contenha as variáveis privadas isso de deve ao facto da classe filha ser a classe pai, logo a variável está ali, porque o pai está ali.<br /> Ele está, pertence, existe, é definida apenas no pai. nunca no filho. O objecto é definido pelo primeiro pai (objet) e acrescentado de todos os outros membros das classes filhas. <br /> <br /> Enfim: membros private não são herdados. <br /> É um contrasenso e um absurdo dizer que são. Esse é todo o objetivo deles serem declarados private. <br /> <br /> ----<br /> <br /> Java tem uma excelente sintaxe porque é simples. com poucas palavras chave. <br /> Poderiamos pensar que numa sintaxe maior a restrição de herança fosse definida com outra palavra<br /> por exemplo "notinherit". Seria mais explicito que aquele menbro não será herdado. Isto continuaria produzindo em memoria uma estrutura completa, porque "herdar" não significa "existe na memoria", significa "existe no escopo". Java é muito mais limpo na sintax e impede a herança de membros com private e a herança de classes com final. <br /> <br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/419958.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/419958.java</link>
				<pubDate><![CDATA[Fri, 11 Jan 2008 19:55:30]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Sergio,<br /> <br /> Quando estava lendo para acrescentar mais algum argumento em prol da minha teoria, econtrei um trecho no livro Java: O Guia essencial de David Flanagan que coloca esta questão dessa forma:<br /> [quote]A especificação de java afirma que uma subclasse herda todos os campos de instância e métodos de instância (...)<br /> A afirmação de que uma subclasse não herda os campos e métodos inacessíveis de sua superclasse pode gerar confusão. Aparentemente, essa afirmação indicaria que, quando você cria uma instância de uma subclasse, nenhuma memória é alocada a qualquer campo private definidos pela superclasse. Essa, porém, não é a intenção da afirmação. Cada instância de uma subclasse inclui, de fato, uma instância completa da superclasse dentro dela, incluindo todos os campos e métodos inacessíveis. Trata-se apenas de uma questão de terminologia. Como os campos inacessíveis não podem ser utilizados na subclasse, dizemos que eles não são herdados. (...)[/quote] <br /> <br /> A questão para mim ficou clara com relação ao sentido semantico, o conceito de herança está sendo associado a questão de usuabilidade pela subclasse e não da forma que eu vejo (que é quanto a composição ou consistência).<br /> <br /> A diferença desses dois contextos, apresenta-se de forma clara no exemplo a seguir:<br /> <br /> [code]public class A {<br />    private int a=1;<br />    private int b=1;<br />    public void setA(int a) { this.a = a; }<br />    public int getA() { return this.a; }<br />    public void setB(int b) { this.b = b; }<br />    public int getB() { return this.b; }<br /> }<br /> <br /> public class B extends A {<br />    public int quadradoA() {<br />       return this.getA() * this.getA();<br />    }<br /> }<br /> <br /> public class C extends B {<br />    public int quadradoB() {<br />       return this.getB() * this.getB();<br />    }<br /> }[/code]<br /> <br /> Se os campos private não fossem herdados (estruturalmente), os métodos que fazem uso dos recursos getA e getB não poderiam funcionar, simplesmente porque o espaço de memória para os campos a e b não deveria existir.<br /> <br /> fw]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/420026.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/420026.java</link>
				<pubDate><![CDATA[Sat, 12 Jan 2008 09:55:19]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=Dieval Guizelini]<br /> A questão para mim ficou clara com relação ao sentido semantico, o conceito de herança está sendo associado a questão de usuabilidade pela subclasse e não da forma que eu vejo (que é quanto a composição ou consistência).<br /> [/quote]<br /> <br /> Otimo que entendeu.<br /> <br /> [quote]<br /> Se os campos private não fossem herdados (estruturalmente), os métodos que fazem uso dos recursos getA e getB não poderiam funcionar, simplesmente porque o espaço de memória para os campos a e b não deveria existir.<br /> [/quote]<br /> <br /> Ora ai é que está. Funcionaria sim. Leia a sua citação de novo:<br /> "Cada instância de uma subclasse inclui, de fato, uma instância completa da superclasse dentro dela, incluindo todos os campos e métodos inacessíveis"<br /> <br /> Imagine dois retangulos . um menor a classe pai e um maior a classe filho. O maior não é um outro retangulo cujo conteudo foi copiado do pai e acrecentado de novas coisas. O maior é o pai acrecentado de novas coisas (sem copia). Então os campos podem não ser herdados e continuaram pertencendo na estrutrura do filho. Aliás , seria absurdo se não pertencecem.A diferença é que a estrutura do filho não é uma copia do pai e sim o pai em si mesmo. Assim asseguramos que os campos que pertencem a um nivel da hirarquia pertencem apenas a esse nivel. <br /> <br /> Ainda bem que estamos esclarecidos quanto ao significado de herança e que ele nada tem a haver com estrutura na memoria. <br /> <br /> Portanto, membros privados não são herdados.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/420058.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/420058.java</link>
				<pubDate><![CDATA[Sat, 12 Jan 2008 11:16:37]]> GMT</pubDate>
				<author><![CDATA[ sergiotaborda]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ [quote=sergiotaborda][quote=Dieval Guizelini]<br /> A questão para mim ficou clara com relação ao sentido semantico, o conceito de herança está sendo associado a questão de usuabilidade pela subclasse e não da forma que eu vejo (que é quanto a composição ou consistência).<br /> [/quote]<br /> Otimo que entendeu.<br /> [/quote]<br /> Eu compreendi o seu ponto de vista, não afirmei que o meu estava errado, e enquanto entedimento e interpretação do conceito de herança continuo defendendo o meu ponto de vista. Eu apenas encontrei uma literatura que descreve formalmente as diferenças de opnião.<br /> O seu foco, para interpretação do conceito de herança, está na usuabilidade do recurso.<br /> O meu foco, para interpretação do conceito de herança, está na existência do recurso (presente na classe filha, independente de estar acessivel diretamente ou não).<br /> <br /> [quote=sergiotaborda]<br /> [quote]<br /> Se os campos private não fossem herdados (estruturalmente), os métodos que fazem uso dos recursos getA e getB não poderiam funcionar, simplesmente porque o espaço de memória para os campos a e b não deveria existir.<br /> [/quote]<br /> Ora ai é que está. Funcionaria sim. Leia a sua citação de novo:<br /> "Cada instância de uma subclasse inclui, de fato, uma instância completa da superclasse dentro dela, incluindo todos os campos e métodos inacessíveis"<br /> [/quote]<br /> A afirmação não é minha, é do David Flanagan.<br /> <br /> [quote=sergiotaborda]<br /> Imagine dois retangulos . um menor a classe pai e um maior a classe filho. O maior não é um outro retangulo cujo conteudo foi copiado do pai e acrecentado de novas coisas. O maior é o pai acrecentado de novas coisas (sem copia). Então os campos podem não ser herdados e continuaram pertencendo na estrutrura do filho. Aliás , seria absurdo se não pertencecem.A diferença é que a estrutura do filho não é uma copia do pai e sim o pai em si mesmo. Assim asseguramos que os campos que pertencem a um nivel da hirarquia pertencem apenas a esse nivel. <br /> [/quote]<br /> O exemplo serve para os dois casos.<br /> <br /> [quote=sergiotaborda]<br /> Ainda bem que estamos esclarecidos quanto ao significado de herança e que ele nada tem a haver com estrutura na memoria. <br /> Portanto, membros [b]privados não são herdados[/b].[/quote]<br /> <br /> A afirmação em negrito é a sua interpretação do conceito para a forma com que o Java implementa o recurso de herança.<br /> <br /> Como vivemos em uma democrácia, podemos conviver com as duas interpretações, e diria mais, que elas, na essencia, são complementares. Pois temos o aspecto da existência da estrutura de informação que está mais do que demonstranda que na classe filha recebe (herda) todas as características definidas na classe pai (independente da visibilidade). E com relação a usuabilidade desses recursos, podemos aceitar o fato que a classe filha não herda da classe pai os recursos, simplesmente pelo fato deles não estarem disponíveis para serem acessados diretamente.<br /> <br /> Logo, para mim, a definição do conceito de herança para recursos privados, é melhor descrito como:<br /> <br /> [b]Uma subclasse recebe todos os campos e métodos da classe pai, porém os recursos privados (private) definidos na classe pai não estarão acessíveis diretamente pela subclasse.[/b]<br /> <br /> Teremos ainda que ampliar a definição da exceção para recursos que são declarados sem o uso de um dos modificadores de acesso (public, private protected) para subclasses que não estejam no mesmo package da classe pai.<br /> <br />  <img src="http://www.guj.com.br/images/smilies/97ada74b88049a6d50a6ed40898a03d7.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/420110.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/420110.java</link>
				<pubDate><![CDATA[Sat, 12 Jan 2008 13:41:18]]> GMT</pubDate>
				<author><![CDATA[ Dieval Guizelini]]></author>
			</item>
			<item>
				<title>Re:Propriedade privada, herda ou não herda?</title>
				<description><![CDATA[ Galera, o negocio é o seguinte.. Ao meu ver, os modificadores public, privated, protected etc... não controlam nada a respeito de herança e sim e somente a respeito de visibilidade externa (public: visivel para todos, privated: oculto para todos e protected: visivel para os filhos da classe) Tanto que se vc fizer uma classe Pessoa com atributos nome e idade PRIVADOS, mas contruir os getters e setters PROTEGIDOS (protected) vc poderá ter acesso a estes atributos por um objeto filho que por definição herdará todas as propriedades de sua SuperClass. <img src="http://www.guj.com.br/images/smilies/97ada74b88049a6d50a6ed40898a03d7.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/77908/596254.java</guid>
				<link>http://www.guj.com.br/posts/preList/77908/596254.java</link>
				<pubDate><![CDATA[Sun, 23 Nov 2008 08:18:20]]> GMT</pubDate>
				<author><![CDATA[ alps]]></author>
			</item>
	</channel>
</rss>