/*
 * Copyright (c) 1997-2001 Centro de Informática - UFPE
 */

/**
 * Esta classe mostra que os atributos de um objeto tamb&eacute;m podem
 * ser acessados por outros objetos da mesma classe, mesmo que sejam do
 * tipo <code>private</code>.
 */
public class Encapsulation {

    // Um atributo (privado) da classe.
    private int atributo;

    // Uma referência a um outro objeto desta classe.
    private Encapsulation proximo;

    /**
     * Um m&eacute;todo que acessa um atributo de um outro objeto desta
     * mesma classe. Notem que este código compila sem problemas. <p>
     * O atributo de um objeto pode ser diretamente modificado
     * por outro objeto da mesma classe. Consequentemente, não
     * &eacute; verdade que os atributos de um objeto só podem ser
     * acessados pelos m&eacute;todos deste objeto.
     */
    void metodo() {
        atributo = 5;
        proximo.atributo = 3;
    }

    /**
     * M&eacute;todo para testes.
     */
    public static void main(String args[]) {
        Encapsulation enc = new Encapsulation();
        enc.proximo = new Encapsulation();
        System.out.println ("Antes da chamada de met():");
        System.out.println ("  enc.atributo     = " + enc.atributo);
        System.out.println ("  enc.proximo.atributo = " + enc.proximo.atributo);
        enc.metodo();
        System.out.println ("Depois da chamada de met():");
        System.out.println ("  enc.atributo      = " + enc.atributo);
        System.out.println ("  enc.proximo.atributo = " + enc.proximo.atributo);
    }

}