A diferença entre sobrecarga, herança, substituição e polimorfismo:
1) Herança é quando uma subclasse obtém membros da classe pai.
2) A substituição é um método de reimplementar a classe pai após a herança.
3) Sobrecarga é uma série de métodos com parâmetros diferentes e o mesmo nome em uma classe.
4) O polimorfismo evita um grande número de sobrecargas na classe pai, o que fará com que o código fique inchado e difícil de manter.
Uma afirmação interessante que vi na Internet é: herança é um método para uma subclasse usar uma classe pai, enquanto polimorfismo é um método para uma classe pai usar uma subclasse.
Os exemplos a seguir incluem estas quatro implementações:
class Triângulo estende Forma {
public int getSides() {
retornar 3;
}
}
classe Retângulo estende Forma {
public int getSides(int i) {
retornar eu;
}
}
classe pública Forma {
booleano público isSharp(){
retornar verdadeiro;
}
public int getSides(){
retornar 0;
}
public int getSides(Triângulo tri){
retornar 3;
}
public int getSides(Retângulo rec){
retornar 4;
}
public static void main(String[] args) {
Triângulo tri = new Triângulo();
System.out.println(“Triângulo é um tipo de sustenido?” + tri.isSharp());
Forma forma = new Triângulo();
System.out.println(“Minha forma tem ” + shape.getSides() + ” lados.”);
}
}
Vermelho está sobrecarregando, verde está sobrescrevendo, azul é herança, rosa é polimorfismo
Observe que os métodos da classe Triangle são substituídos, enquanto os métodos da classe Rectangle são sobrecarregados.
Comparando as partes vermelha e rosa, você pode encontrar as vantagens do polimorfismo sobre a sobrecarga: Se você usar sobrecarga, um método para obter o número de arestas deve ser sobrecarregado na classe pai para cada subclasse, se você usar o polimorfismo, então A classe pai; fornece apenas uma interface para obter o número de lados. Quanto à obtenção do número de lados de qual formato e como obtê-lo, eles são implementados (reescritos) nas subclasses respectivamente.