Modificadores de Acceso en POO

Modificadores de Acceso en POO

Los modificadores de acceso definen el nivel de visibilidad de los miembros (atributos y métodos) de una clase. Esto determina qué partes del código pueden acceder a ellos. Los modificadores más comunes son:

  • public: El miembro es accesible desde cualquier parte del programa.
  • private: El miembro solo es accesible desde dentro de la clase.
  • protected: El miembro es accesible desde dentro de la clase y desde las clases derivadas.

C++

C++
class Animal {
public:
    void hacerRuido() {
        cout << "Hace un ruido" << endl;
    }

protected:
    string nombre;

private:
    int edad;
};

En este ejemplo:

  • hacerRuido es público, por lo que cualquier código puede llamarlo.
  • nombre es protegido, así que solo las clases que heredan de Animal pueden acceder a él.
  • edad es privado, solo la clase Animal puede manipularlo directamente.

C#

C#
public class Persona {
    public string Nombre { get; set; }
    private int Edad;

    public void Presentarse() {
        Console.WriteLine("Hola, soy " + Nombre);
    }
}

En C#, los atributos suelen encapsularse en propiedades (como Nombre) para controlar el acceso.

Java

Java
public class Coche {
    private String marca;
    public void acelerar() {
        // Código para acelerar
    }
}

Similar a C#, Java utiliza propiedades para encapsular atributos.

Python

Python
class Perro:
    def __init__(self, nombre):
        self.nombre = nombre
        self.__raza = "Desconocida"  # Convención para privado

    def ladrar(self):
        print("Guau!")

En Python, no hay modificadores de acceso formales como en otros lenguajes, pero se utiliza la convención de doble guión bajo (__) para indicar que un atributo es privado.

Otros Modificadores

static

Indica que un miembro pertenece a la clase en sí, no a una instancia de la clase. Se utiliza para variables y métodos que son comunes a todos los objetos de esa clase.

Java
public class Matematicas {
    public static int sumar(int a, int b) {
        return a + b;
    }
}

final

Impide que un atributo sea modificado después de su inicialización o que un método sea sobreescrito en una subclase.

C++
class Circulo {
public:
    const float PI = 3.14159; // Constante
    void calcularArea() final {
        // ...
    }
};

friend (C++)

Permite a una función o clase acceder a los miembros privados de otra clase. Se usa con cautela.

C++
class ClaseA; // Declaración adelantada

class ClaseB {
    friend void funcionAmiga(ClaseA& obj);
private:
    int valorPrivado;
};


Comentarios

Entradas más populares de este blog

Tratamiento de excepciones

Agregación

Composición