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
. Quando tentamos inicializar o campo diretamente, ocorre um erro indicando que o campo name
possui um 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ó podemos inicializar os campos dos objetos, mas não acessar esses campos. Vamos analisar 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; } }
Conseguimos inicializar o campo name
por meio do construtor, mas ainda não podemos acessar esse campo e imprimi-lo usando System.out.println()
. Para contornar isso, podemos sobrescrever o método toString()
para que, ao chamar System.out.println(bob);
, sejam exibidas informações sobre seus campos.
Vamos analisar 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
Can you show an example of using the private modifier in a class?
How do I override the toString() method to display private fields?
Why is it important to hide fields and methods from other classes?
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
. Quando tentamos inicializar o campo diretamente, ocorre um erro indicando que o campo name
possui um 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ó podemos inicializar os campos dos objetos, mas não acessar esses campos. Vamos analisar 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; } }
Conseguimos inicializar o campo name
por meio do construtor, mas ainda não podemos acessar esse campo e imprimi-lo usando System.out.println()
. Para contornar isso, podemos sobrescrever o método toString()
para que, ao chamar System.out.println(bob);
, sejam exibidas informações sobre seus campos.
Vamos analisar 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!