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
protectedestrito. 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.