Menu
Coddy logo textTech

Visão Geral dos Níveis de Acesso

Parte da seção Programação Orientada a Objetos do Journey de Java da Coddy. Lição 10 de 87.

Modificadores de acesso controlam de onde campos e métodos podem ser acessados. O Java possui quatro níveis de controle de acesso.

ModificadorMesma ClasseMesmo PacoteSubclasseEm qualquer lugar
privateSimNãoNãoNão
default (sem palavra-chave)SimSimNãoNão
protectedSimSimSimNão
publicSimSimSimSim
public class BankAccount {
    private double balance;      // Apenas esta classe
    String accountType;          // Padrão: apenas o mesmo pacote
    protected String owner;      // Mesmo pacote + subclasses
    public String bankName;      // Acessível em qualquer lugar
}

private é o mais restritivo - use-o para dados internos que nunca devem ser acessados diretamente. public é o mais aberto - use-o para métodos que outras classes precisam chamar.

Quando você não especifica nenhum modificador, o Java usa o acesso padrão (também chamado de acesso privado do pacote). Isso permite acesso somente dentro do mesmo pacote.

class Helper {           // Classe de acesso padrão
    void assist() { }    // Método de acesso padrão
}

Escolha o nível de acesso mais restritivo que ainda permita que seu código funcione. Isso protege seus dados e torna seu código mais fácil de manter.

challenge icon

Desafio

Fácil

Vamos criar um sistema de registros de Student que demonstra como os modificadores de acesso controlam a visibilidade entre diferentes arquivos.

Você criará dois arquivos para organizar seu código:

  • Student.java: defina uma classe Student com campos usando diferentes níveis de acesso:
    • campo private: studentId (String) — acessível apenas dentro da classe Student
    • campo padrão (sem modificador): grade (int) — acessível dentro do mesmo pacote
    • campo protected: name (String) — acessível no mesmo pacote e em subclasses
    • campo public: school (String) — acessível em qualquer lugar
    Inclua um construtor que defina os quatro campos e um método public chamado getInfo() que retorne uma string no formato: "[studentId] name - Grade grade at school"
  • Main.java: crie um objeto Student e demonstre quais campos podem ser acessados diretamente de fora da classe. Imprima o campo school diretamente e, em seguida, imprima o resultado de getInfo() para mostrar todas as informações do estudante.

Você receberá quatro entradas: studentId, name, grade e school (nessa ordem).

Sua saída deve conter duas linhas: o nome da escola acessado diretamente, seguido pelas informações completas do estudante retornadas pelo método getInfo().

Experimente você mesmo

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Ler as entradas
        String studentId = scanner.nextLine();
        String name = scanner.nextLine();
        int grade = Integer.parseInt(scanner.nextLine());
        String school = scanner.nextLine();
        
        // TODO: Criar um objeto Student com os valores de entrada
        
        
        // TODO: Imprimir o campo school diretamente (acessível porque é public)
        
        
        // TODO: Imprimir o resultado de getInfo() para mostrar todas as informações do estudante
        
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de Java online