Encapsulamento e métodos privados

Desculpem pelas perguntas que eu até talvez já saiba a resposta mas estou usando essas perguntas como forma de afirmação para o meu cérebro e revisão para melhorar e tbm conseguir dicas e compreensão extra de meus estudos.Encapsulamento manter métodos e variaveis escondidos tanto para serem implementados na própria classe quanto fora dela no livro tem um trecho onde ele coloca executa um método dentro de uma variável de outra classe pois esse método deveria ser publico ele necessita ser executado de fora da classe isso eu entendi mas é a melhor maneira criar uma variável privada e executar o metódo retornando o valor pra essa variável não existe outra maneira de utilizar um método publico
dentro de outra classe com encapsulamento OBS:o termo utilizado pro comportamento que tinha antes disso era intimidade imprópria

Tenta reescrever sua dúvida, usando sinais de pontuação.

Desculpe pelas perguntas, talvez eu já saiba as respostas, mas estou utilizando essas perguntas como uma forma de afirmação para o meu cérebro, revisão para aprimorar meus estudos, e também para obter dicas e uma compreensão extra. Sobre o encapsulamento, que envolve manter métodos e variáveis ocultos, tanto para implementação dentro da própria classe quanto fora dela, encontrei um trecho no livro onde é sugerido executar um método dentro de uma variável de outra classe. Isso é necessário quando o método deve ser público e precisa ser executado fora da classe. Eu compreendi essa abordagem, que envolve criar uma variável privada e executar o método, retornando o valor para essa variável. Entretanto, gostaria de saber se existe alguma outra maneira de utilizar um método público em outra classe com encapsulamento. Observação: o termo utilizado para descrever o comportamento anterior a isso era “intimidade imprópria”.

Você está correto em sua compreensão do encapsulamento e da necessidade de manter métodos e variáveis ocultos para garantir a integridade do objeto e promover a modularidade do código. Quando se trata de executar um método público de uma classe em outra classe, a abordagem que você mencionou, de criar uma variável privada e executar o método através dela, é uma maneira comum de garantir o encapsulamento.

Outra abordagem para utilizar um método público de uma classe em outra classe é através da injeção de dependência. Isso envolve passar uma instância da classe que contém o método público como um parâmetro para o construtor da classe que deseja utilizá-lo. Dessa forma, a classe que precisa do método público não precisa acessá-lo diretamente, mas sim através da instância passada como parâmetro.

// Definição da classe ClasseA
public class ClasseA {
    public String metodoPublico() {
        return "Método público de ClasseA";
    }
}
// Definição da classe ClasseB
public class ClasseB {
    private ClasseA instanciaClasseA;

    // Construtor que recebe uma instância de ClasseA como parâmetro
    public ClasseB(ClasseA instanciaClasseA) {
        this.instanciaClasseA = instanciaClasseA;
    }

    // Método que utiliza o método público de ClasseA
    public String usarMetodoPublico() {
        return instanciaClasseA.metodoPublico();
    }
}
// Definição da classe para executar o exemplo
public class Exemplo {

    // Método main para demonstração
    public static void main(String[] args) {
        ClasseA objetoClasseA = new ClasseA();
        ClasseB objetoClasseB = new ClasseB(objetoClasseA);
        System.out.println(objetoClasseB.usarMetodoPublico()); // Saída: Método público de ClasseA
    }
}

Neste exemplo, ClasseB recebe uma instância de ClasseA no construtor e armazena essa instância em um campo privado instanciaClasseA. O método usarMetodoPublico() então chama o método público metodoPublico() da instância de ClasseA.

No método main, criamos uma instância de ClasseA e uma instância de ClasseB, passando a instância de ClasseA como argumento para o construtor de ClasseB. Finalmente, chamamos o método usarMetodoPublico() em ClasseB para utilizar o método público de ClasseA.

1 curtida

Obrigado como sempre suas respostas são ótimas e bem detalhadas

1 curtida