Modificador Private
Como Ocultar Campos e Métodos de Outra Classe
Modificadores de acesso são utilizados para controlar a visibilidade e acessibilidade de variáveis e métodos em Java. Eles permitem definir o escopo e restringir o acesso a determinados membros de uma classe.
Já discutimos modificadores de acesso na seção anterior. Agora, vamos analisar mais detalhadamente o modificador de acesso mais utilizado - private.
Como você sabe, com o modificador de acesso private, só é possível acessar um campo/método a partir da própria classe em que ele está localizado. Veja um exemplo de uso do modificador private:
Por exemplo, se não quisermos que uma variável em uma classe seja visível ou acessível por outra classe, podemos utilizar o modificador de acesso private:
Main.java
123456789101112131415package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }
Declaramos os campos da classe Person como private. Ao tentar inicializar o campo diretamente, ocorre um erro indicando que o campo name possui o modificador de acesso private e não está acessível para chamada ou modificação no método main.
Como Inicializar um Campo Privado
A maneira mais simples de contornar essa proteção é utilizar a inicialização por meio de um construtor. No entanto, dessa forma, só é possível inicializar os campos dos objetos, mas não acessar esses campos. Veja um exemplo:
Main.java
123456789101112131415161718package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }
Foi possível inicializar o campo name por meio do construtor, mas ainda não é possível acessar esse campo e imprimi-lo utilizando System.out.println(). Para contornar essa limitação, é possível sobrescrever o método toString() para que, ao chamar System.out.println(bob);, sejam exibidas informações sobre seus campos.
Veja um exemplo:
Main.java
1234567891011121314151617181920212223package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }
Finalmente conseguimos exibir o valor do campo name do objeto bob. Isso foi alcançado utilizando o método sobrescrito toString(), onde implementamos a lógica para exibir o name.
Surge então a pergunta: por que precisamos desse modificador de acesso se temos que escrever tanto código extra?
Às vezes, em diferentes classes, existem variáveis com o mesmo nome, e nesses casos é necessário ocultar as variáveis dessas classes para que outras classes não tenham acesso a campos desnecessários. Isso melhora significativamente a conveniência ao escrever código, pois facilita a compreensão de qual campo pertence a qual classe.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 2.63
Modificador Private
Deslize para mostrar o menu
Como Ocultar Campos e Métodos de Outra Classe
Modificadores de acesso são utilizados para controlar a visibilidade e acessibilidade de variáveis e métodos em Java. Eles permitem definir o escopo e restringir o acesso a determinados membros de uma classe.
Já discutimos modificadores de acesso na seção anterior. Agora, vamos analisar mais detalhadamente o modificador de acesso mais utilizado - private.
Como você sabe, com o modificador de acesso private, só é possível acessar um campo/método a partir da própria classe em que ele está localizado. Veja um exemplo de uso do modificador private:
Por exemplo, se não quisermos que uma variável em uma classe seja visível ou acessível por outra classe, podemos utilizar o modificador de acesso private:
Main.java
123456789101112131415package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }
Declaramos os campos da classe Person como private. Ao tentar inicializar o campo diretamente, ocorre um erro indicando que o campo name possui o modificador de acesso private e não está acessível para chamada ou modificação no método main.
Como Inicializar um Campo Privado
A maneira mais simples de contornar essa proteção é utilizar a inicialização por meio de um construtor. No entanto, dessa forma, só é possível inicializar os campos dos objetos, mas não acessar esses campos. Veja um exemplo:
Main.java
123456789101112131415161718package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }
Foi possível inicializar o campo name por meio do construtor, mas ainda não é possível acessar esse campo e imprimi-lo utilizando System.out.println(). Para contornar essa limitação, é possível sobrescrever o método toString() para que, ao chamar System.out.println(bob);, sejam exibidas informações sobre seus campos.
Veja um exemplo:
Main.java
1234567891011121314151617181920212223package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }
Finalmente conseguimos exibir o valor do campo name do objeto bob. Isso foi alcançado utilizando o método sobrescrito toString(), onde implementamos a lógica para exibir o name.
Surge então a pergunta: por que precisamos desse modificador de acesso se temos que escrever tanto código extra?
Às vezes, em diferentes classes, existem variáveis com o mesmo nome, e nesses casos é necessário ocultar as variáveis dessas classes para que outras classes não tenham acesso a campos desnecessários. Isso melhora significativamente a conveniência ao escrever código, pois facilita a compreensão de qual campo pertence a qual classe.
Obrigado pelo seu feedback!