Não. Depende de qual atributo vc está mexendo.
O atributo herdado fica na classe pai. Ele nunca saiu de lá. Nunca sairá. É por isso que posso ter dois atributos com nomes iguais
no pai e no filho. O conceito é que a classe filha tem acesso ( o termo técnico é: “está no mesmo escopo de”) ao que o pai definiu, mas as coisas estão no pai.
Imagine que o pai é um conjunto de atributos e métodos. O filho é um conjunto maior que contêm o conjunto anterior.
(faça um diagrama de vern) Então, o filho tem acesso ao pai porque o pai “está dentro dele”.
No exemplo que eu dei o resultado é 3. Isto porque o atributo m é definido em A. Então o Java - muito esperto - assume que estamos nos referindo ao m de A e não ao de B. ( isso e´o sombreamento). Se eu quiser me referir ao m de B eu tenho que escrever
public int getM(){
return super.m;
}
Esse m está na classe pai. Eu posso até usar os dois simultaneamente
public int getM(){
return super.m - m;
}
// ou
public int getM(){
return super.m - this.m;
}
então, como falei antes: O que está no pai, está sempre no pai. O que está no filho está sempre no filho. Acontece apenas que o filho pode manipular o que está nele e também o que está no pai. Mas as coisas não mudam de lugar.
–
O pulo do gato é que a filha É o pai. Ela obtem as coisas porque ela própria É-UM pai e não porque copia as coisas.
Este conceito de a filha É o pai não existe no mundo real e é ai que para a analogia de pais e filhos acaba e começa o conceito de herança.