Olá simplesmente você utiliza o extends para estender essa classe, dessa forma ela será essa outra classe logo depois você reescreve o método com a alteração em seu comportamento.
Vou citar um exemplo para melhor didática.
temos uma Classe Animal
public class CAnimal extends Object {
private String sNome;
private int iPeso;
CAnimal (String pNome, int pPeso){
this.setNome(pNome);
this.setPeso(pPeso);
}
void vDormir(){
System.out.println("Dormindo ");
}
void vFazerBarulho(){
System.out.println("Fazendo barulho ");
}
public String getNome() {
return sNome;
}
public void setNome(String sNome) {
this.sNome = sNome;
}
public int getPeso() {
return iPeso;
}
public void setPeso(int iPeso) {
this.iPeso = iPeso;
}
}
// essa classe extende de Object, na verdade toda classe no final das contas extend mas isso é outro assunto.
bom pense comigo podemos ter diversos tipos de animais certo, um cachorro um mamute ou um leão mas concorda que todos são animais ou seja todos podem extender de uma animal que no caso é essa classe. vou citar um exemplo:
public class CCoruja extends CAnimal {
CCoruja (){
super("Zoiuda",5);
}
}
persebeu que essa classe extends de CAnimal ou seja coruja é um animal logo ela tem todas as cacacterísticas de um animal ou seja poderíamos no metodo main fazer por exemplo:
public class CAnimalTest {
public static void main(String[] args) {
CCoruja uhuh = new CCoruja();
System.out.println(uhuh.getNome());
uhuh.vDormir();
uhuh.vFazerBarulho();
System.out.println(uhuh.getPeso());
}
}
percebe que os atributos não estão em coruja e sim em animal, mas ao mesmo tempo ela extend animal assim fica fácil não é, daí você poderá aplicar atributos que somente uma coruja tem como por exemplo coresDaPena como no exemplo abaixo:
public class CCoruja extends CAnimal {
private String coresDaPena;
CCoruja (){
super("Zoiuda",5);
}
public String getCoresDaPena() {
return coresDaPena;
}
public void setCoresDaPena(String coresDaPena) {
this.coresDaPena = coresDaPena;
}
}
e no teste ficaria com esse novo atributo, legal né esse comportamento da herança, veja abaixo:
public class CAnimalTest {
public static void main(String[] args) {
CCoruja uhuh = new CCoruja();
System.out.println(uhuh.getNome());
uhuh.setCoresDaPena("Amarela e preta");
System.out.println(uhuh.getCoresDaPena());
uhuh.vDormir();
uhuh.vFazerBarulho();
System.out.println(uhuh.getPeso());
}
agora vamos pensar em relação a métodos esses no caso tem o comportamento padrão da classe mãe mas podemos reescrevê lo na classe, ai você pode me perguntar… mas por que vou reescrevê lo se eu posso somente escrever uma vez para cada classe, daí que entra a facilidade que a herança te traz pois cada animal poderia ter características diferentes para um mesmo método, a grosso modo pense por exemplo no método som, vamos fazer um exemplo que fica mais fácil
public class CAnimal extends Object {
void somDoAnimal(){
System.out.println("som padrão HUHUHUHU ");
}
public class Gato extends CAnimal {
void somDoAnimal(){
System.out.println("MIAU");
}
public class Coruja extends CAnimal {
//outros atributos....
public class CAnimalTest {
public static void main(String[] args) {
Coruja uhu = new Coruja();
System.out.println(uhu.somDoAnimal);
Gato miau = new Gato();
System.out.println(miau.somDoAnimal);
}
`
public class CAnimalTest {
public static void main(String[] args) {
CAnimal uhu = new Coruja();
System.out.println(uhu.somDoAnimal);
Gato miau = new Gato();
System.out.println(miau.somDoAnimal);
}
`
perceba a diferença e quantas possibilidades você pode ter com tudo isso.