Menu
Coddy logo textTech

Visión general de los niveles de acceso

Parte de la sección Programación Orientada a Objetos del Journey de Java de Coddy — lección 10 de 87.

Los modificadores de acceso controlan desde dónde se puede acceder a los campos y métodos. Java tiene cuatro niveles de control de acceso.

ModificadorMisma claseMismo paqueteSubclaseEn todas partes
privateNoNoNo
default (sin palabra clave)NoNo
protectedNo
public
public class BankAccount {
    private double balance;      // Solo esta clase
    String accountType;          // Predeterminado: solo el mismo paquete
    protected String owner;      // Mismo paquete + subclases
    public String bankName;      // Accesible desde cualquier lugar
}

private es el más restrictivo: úselo para datos internos que nunca deberían ser accedidos directamente. public es el más abierto: úselo para métodos que otras clases necesiten llamar.

Cuando no especificas ningún modificador, Java utiliza el acceso default (también llamado package-private). Esto permite el acceso solo dentro del mismo paquete.

class Helper {           // Clase con acceso predeterminado
    void assist() { }    // Método con acceso predeterminado
}

Elige el nivel de acceso más restrictivo que aún permita que tu código funcione. Esto protege tus datos y hace que tu código sea más fácil de mantener.

challenge icon

Desafío

Fácil

Construyamos un sistema de registro de Student que demuestre cómo los modificadores de acceso controlan la visibilidad a través de diferentes archivos.

Crearás dos archivos para organizar tu código:

  • Student.java: Define una clase Student con campos que utilicen diferentes niveles de acceso:
    • Campo private: studentId (String) - solo accesible dentro de la clase Student
    • Campo por defecto (sin modificador): grade (int) - accesible dentro del mismo paquete
    • Campo protected: name (String) - accesible en el mismo paquete y subclases
    • Campo public: school (String) - accesible en todas partes
    Incluye un constructor que establezca los cuatro campos, y un método public llamado getInfo() que devuelva una cadena en el formato: "[studentId] name - Grade grade at school"
  • Main.java: Crea un objeto Student y demuestra qué campos pueden ser accedidos directamente desde fuera de la clase. Imprime el campo school directamente, luego imprime el resultado de getInfo() para mostrar toda la información del estudiante.

Recibirás cuatro entradas: studentId, name, grade, y school (en ese orden).

Tu salida debe constar de dos líneas: el nombre de la escuela accedido directamente, seguido de la información completa del estudiante del método getInfo().

Pruébalo tú mismo

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Leer las entradas
        String studentId = scanner.nextLine();
        String name = scanner.nextLine();
        int grade = Integer.parseInt(scanner.nextLine());
        String school = scanner.nextLine();
        
        // TODO: Crear un objeto Student con los valores de entrada
        
        
        // TODO: Imprimir el campo school directamente (accesible porque es public)
        
        
        // TODO: Imprimir el resultado de getInfo() para mostrar toda la información del estudiante
        
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos