Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Modificador Private | Classes Avançadas
Java Avançado
course content

Conteúdo do Curso

Java Avançado

Java Avançado

1. Estrutura Profunda do Java
2. Métodos
3. String Avançado
4. Classes
5. Classes Avançadas

book
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

Main.java

copy
123456789101112131415
package 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

Main.java

copy
123456789101112131415161718
package 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

Main.java

copy
1234567891011121314151617181920212223
package 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.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

course content

Conteúdo do Curso

Java Avançado

Java Avançado

1. Estrutura Profunda do Java
2. Métodos
3. String Avançado
4. Classes
5. Classes Avançadas

book
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

Main.java

copy
123456789101112131415
package 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

Main.java

copy
123456789101112131415161718
package 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

Main.java

copy
1234567891011121314151617181920212223
package 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.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 3
some-alt