Pelo que eu entendi, a questão é que o objeto "casa" criado dentro do metodo criaNovaCasaAlugada() não deveria alterar o atributo alugada, atributo esse que a principio é do seu "criador" (o objeto this).
Mas ele não alterou o atributo do objeto this, mas o atributo alugada da sua própria instancia, ou seja this.alugada está preservada. Acho que o "problema" é mais de sintaxe da linguagem do que de conceito de OO: o compilador achou um atributo alugada dentro da classe Casa, e validou o codigo. Do ponto de vista de codificação isto está correto: um atributo privado está sendo manipulado dentro da própria classe. Testem o codigo abaixo para ver o resultado. Roberto Tatemoto PS: Mas que isto fica esquisito... class Casa implements Cloneable { private boolean alugada; public Casa() { } public Casa criaNovaCasaAlugada() throws Exception { Casa casa = (Casa)this.clone(); casa.alugada = true; System.out.println("Atributo do objeto this " + this.alugada ); return casa; } public void setAlugada(boolean alugada) { this.alugada = alugada; } public boolean isAlugada() { return alugada; } } public class MainCasa { public static void main(String[] args) throws Exception { Casa casa = new Casa(); casa.setAlugada(false); Casa oClone = casa.criaNovaCasaAlugada(); System.out.println("Original " + casa.isAlugada()); System.out.println("Clone " + oClone.isAlugada()); } } > Se for para ser meio "xiita", de fato o jconde tem razão. A casa this é um objeto e a > casa nova é outro, logo um não deveria mexer nos atributos do outro. Mas como eles > pertencem a mesma classe, acaba sendo possível esse tipo de código. Teoricamente, é um > furo, mas na prática, o programador da classe é o cara mais indicado para "fuçar" na > classe à vontade, pois ele (em princípio) sabe exatamente o que deve ou não fazer com > cada atributo nessa classe, assim o risco de fazer uma besteira muito grande é > pequeno. > > 15/11/02 10:27:56, "Herbert Alexander Faleiros" <[EMAIL PROTECTED]> wrote: > > >Se não me engano (corrijam-me se estiver errado) todos os métodos > >"public" desta sua classe podem acessar ou modificar as variáveis de > >instância "private" desta mesma classe. Não tem nada errado nisto, é > >assim que funciona mesmo, mas isto se aplica somente aos métodos > >"public" da classe, se vc tentar alterar ou acessar diretamente a > >variável, sem ser através de um destes métodos vc receberá algo do tipo: > >"variable alugada has private acess in class Casa"... Ou seja, apenas os > >métodos "public" da classe podem e devem acessar/modificar variáveis de > >instância "private" na classe. > > > >Herbert Alexander Faleiros > >Administrador de redes NT/W2K > >Programador Java / Webmaster > >Graduando em Física - UFSCar > >[EMAIL PROTECTED] > >[EMAIL PROTECTED] > >(16) 9117-2962 > > > > > >-----Mensagem original----- > >De: José Augusto Cerqueira Condé [mailto:[EMAIL PROTECTED]] > >Enviada em: sexta-feira, 8 de novembro de 2002 17:46 > >Para: '[EMAIL PROTECTED]' > >Assunto: [java-list] Restrição de acesso em classes x objetos > > > >Colegas, > > > >Recentemente me atentei a uma questão interessante. Os níveis de > >restrição > >de acesso a atributos e métodos de uma classe, implementados pela > >linguagem > >java, se aplicam apenas a classes e não a objetos. > > > >Tomem como exemplo a classe abaixo : > > > > > >public Casa > >{ > > > > private boolean alugada; > > > > public casa() > > { > > } > > > > > > public Casa criaNovaCasaAlugada() > > { > > Casa casa = (Casa)this.clone(); > > casa.alugada = true; > > } > > > > public void setAlugada(boolean alugada) > > { > > this.alugada = alugada; > > } > > > > public boolean isAlugada() > > { > > return alugada; > > } > > > >} > > > >Apesar de parecer estranho o atributo "alugada" estar sendo acessado > >externamente, o método "criaNovaCasaAlugada" está correto do ponto de > >vista > >da linguagem java. Mas em relação às boas maneiras da Orientação > >Objetos, > >isto não seria aberração (objetos acessando atributos protegidos de > >outros > >objetos)? > > > >Atenciosamente, > > > >JConde > >[EMAIL PROTECTED] > > > >------------------------------ LISTA SOUJAVA > >---------------------------- > >http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > >dúvidas mais comuns: http://www.soujava.org.br/faq.htm > >regras da lista: http://www.soujava.org.br/regras.htm > >historico: http://www.mail-archive.com/java-list%40soujava.org.br > >para sair da lista: envie email para > >[EMAIL PROTECTED] > >------------------------------------------------------------------------ > >- > > > > > > > >------------------------------ LISTA SOUJAVA ---------------------------- > >http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > >dúvidas mais comuns: http://www.soujava.org.br/faq.htm > >regras da lista: http://www.soujava.org.br/regras.htm > >historico: http://www.mail-archive.com/java-list%40soujava.org.br > >para sair da lista: envie email para [EMAIL PROTECTED] > >------------------------------------------------------------------------- > > > +++++++++++++++++++++++++++++++++++ > Ana Paula Brandão Lopes, M. Sc. > Universidade Estadual de Santa Cruz > Ilhéus-BA > 73-680-5271 > +++++++++++++++++++++++++++++++++++ > > > > ------------------------------ LISTA SOUJAVA ---------------------------- > http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP > dúvidas mais comuns: http://www.soujava.org.br/faq.htm > regras da lista: http://www.soujava.org.br/regras.htm > historico: http://www.mail-archive.com/java-list%40soujava.org.br > para sair da lista: envie email para [EMAIL PROTECTED] > ------------------------------------------------------------------------- ------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------