Sobes.tech
Junior

Como funciona o modificador de acesso 'protected' nas linguagens de programação?

sobes.tech IA

Resposta da IA

O modificador de acesso protected fornece acesso a um membro da classe (campo, método ou propriedade) a partir de:

  • Da própria classe onde esse membro é declarado.
  • De classes derivadas (subclasses).
  • Em algumas linguagens (por exemplo, Java), de todas as classes dentro do mesmo pacote.

Aplicabilidade por linguagens:

  • Java: Disponível dentro do pacote e em classes derivadas de qualquer pacote.
  • C#: Disponível dentro da classe e em classes derivadas. Também existe a combinação protected internal, que fornece acesso dentro do assembly e em classes derivadas (incluindo classes derivadas em outros assemblies).
  • C++: Disponível dentro da classe e em classes derivadas.
  • Python: Não possui um protected estrito. Os membros destinados à proteção geralmente são nomeados com um underscore (_) no início, o que é uma convenção e não uma restrição de acesso.

Exemplo (Java):

class Parent {
    protected int protectedField;

    protected void protectedMethod() {
        // ...
    }
}

class Child extends Parent {
    public void accessProtected() {
        this.protectedField = 10; // Acesso na classe derivada
        this.protectedMethod(); // Acesso na classe derivada
    }
}

class AnotherClassInSamePackage {
    public void accessProtected(Parent p) {
        p.protectedField = 20; // Acesso na mesma package
        p.protectedMethod();   // Acesso na mesma package
    }
}

class AnotherClassInDifferentPackage {
    // Não tem acesso direto aos membros protected
    // a menos que seja uma subclasse
}

protected é amplamente utilizado para implementar herança, permitindo que classes derivadas estendam a funcionalidade da classe pai, enquanto escondem detalhes internos de sua interação do mundo externo.