As classes têm dois membros importantes: variáveis de membro e métodos. Alguns dos membros de uma subclasse são declarados e definidos pela própria subclasse, enquanto outros são herdados de sua classe pai. A subclasse herda a variável membro da classe pai como uma de suas próprias variáveis membro, como se a variável membro fosse declarada diretamente na subclasse, e pudesse ser operada por qualquer método de instância definido na subclasse. A subclasse herda o método da classe pai como um de seus próprios métodos, como se o método fosse definido diretamente na subclasse, e pudesse ser chamado por qualquer método de instância definido na subclasse.
Herança entre subclasses e classes pai no mesmo pacote:
Se a subclasse e a classe pai estiverem no mesmo pacote, então a subclasse herdará naturalmente as variáveis-membro não privadas da classe pai como suas próprias variáveis-membro e também herdará naturalmente os métodos não privados da classe pai como seus próprios. O acesso a métodos, variáveis de membro herdadas ou métodos permanece inalterado.
Herança quando a subclasse e a classe pai não estão no mesmo pacote:
Se a subclasse e a classe pai não estiverem no mesmo pacote, as variáveis-membro de acesso privado e amigável na classe pai não serão herdadas pela subclasse, ou seja, a subclasse herda apenas as variáveis e métodos de membro de acesso público e protegido em a classe pai como variáveis de membro e métodos de subclasses.
Mais explicações sobre protegido:
As variáveis e métodos-membros protegidos em uma classe A podem ser herdados por suas classes descendentes. Por exemplo, se B é uma subclasse de A, C é uma subclasse de B e D é uma subclasse de C, então as classes B, C, e D todos herdam variáveis e métodos de membro protegido da classe A.
Se você criar um objeto em D usando a classe D, o objeto sempre poderá acessar variáveis e métodos protegidos herdados ou autodefinidos por meio do operador "." é criado usando a classe D na classe. As permissões deste objeto para acessar variáveis e métodos protegidos por meio do operador "."
1. Para as variáveis e métodos-membro protegidos declarados pela própria subclasse D, desde que a outra classe e a classe D estejam no mesmo pacote, o objeto objeto pode acessar essas variáveis e métodos-membro protegidos.
2. Para as variáveis-membro protegidas ou métodos protegidos que a subclasse D herda da classe pai, ela precisa ser rastreada até a classe "ancestral" onde essas variáveis ou métodos-membro protegidos estão localizados. Por exemplo, pode ser a classe A, contanto que a classe Other e a classe A estejam no mesmo pacote, o objeto objeto pode acessar variáveis e métodos protegidos herdados.