Falemos em conjunto de herança e polimorfismo
2. Polimorfismo:
Polimorfismo é a capacidade de algumas estruturas de código numa linguagem OOP serem tratadas como estruturas diferentes em tempo de execução.
2.1 Polimorfismo de objectos:
p> Ao discutir a herança, foi explicado que quando a classe B herda da classe A, um objecto da classe B é também considerado como um objecto da classe A. É o polimorfismo de objectos.
2.2 Método Polimorfismo
Na maioria das línguas OOP, os métodos são diferenciados uns pelos outros pela sua assinatura, que é uma combinação do nome do método, e os tipos, número e ordem dos parâmetros que são passados para dentro. Este sistema de diferenciação permite-nos anular e sobrecarregar os métodos.
2.3 Tipo de Polimorfismo
2.3.1 Polimorfismo de tempo de compilação
2.3.2 Polimorfismo de tempo de execução
Acima de exemplo , o animal vazio públicoSound() é o polimorfismo de tempo de execução. A sobrecarga do método chama-se polimorfismo de tempo de compilação, porque estes métodos são diferenciados pelo compilador com base nos parâmetros que lhes são dados.
Implementação:
Tudo acima é definição de herança e polimorfismo . Podemos encontrá-la em qualquer lugar, e devemos saber também. Mas, aqui, quero discutir a implementação deste conceito a nível de projecto. Também quero dizer sobre a relação entre duas ou mais classes, enquanto uma classe herda outra classe. Na verdade , Herança significa que estabeleceu uma relação entre eles. Há dois tipos de relação . Herança apresenta relação “IS-A” e outra é relação de composição. Vejamos um exemplo antes de ir mais longe.
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}
class Vehicle extends Animal {
public void vehicleSound() {
System.out.println("Vehicle Sound !!");
}
}
No exemplo acima, temos duas classes Animal e Veículo onde a classe Veículo herda a classe Animal. Será que ela cria qualquer significado lógico por herança mesmo que tecnicamente não haja erro? Obviamente, não existe qualquer significado. Portanto, devemos sempre herdar de forma adequada, a partir da qual podemos estabelecer uma relação adequada. Vamos a outro exemplo
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}class Dog extends Animal {
public void animalSound() {
System.out.println("Dog Sound !!");
}
}
Now Dog class inherits animal class . Depois o objecto da classe de cão também herda todas as propriedades e comportamento da classe animal que também dão significado lógico. E isto é chamado de relação “IS-A”. Mas quando criamos objecto de qualquer classe noutra classe, então a relação entre objecto criado e classe chama-se ” HAS-A” ( composição) .
Exemplo:
class Dog {
public void animalSound() {
System.out.println("Dog sound");
}
}class Person {
public static void main(String args) { Dog dogObj = new Dog(); // "HAS-A" relationship dogObj.animalSound();
}
}
P>Ponto Importante em java :
Aqui , utilizei todos os exemplos em linguagem de programação java . Assim, temos de nos lembrar de alguns pontos importantes em java durante o conceito de herança.
- li>Java não permite herança múltipla e híbrida em classes como C++ porque Java se torna confuso para sobrepor método (run -time Polymorphism) enquanto o mesmo nome de método aparece em ambas as classes. Exemplo
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}class Mammal {
public void animalSound() {
System.out.println("The mammal makes a sound");
}}// error , multiple class inheritanceclass Dog extends Animal,Mammal {
public void animalSound() {
System.out.println("Dog Sound !!");
}
}
- >li> Mas Java pode herdar múltiplas Interfaces.
Conclusion:
Inheritância e polimorfismo são conceitos muito importantes que são utilizados em cada uma das etapas dos projectos. Precisamos de herdar outra classe definida pelo utilizador ou classe incorporada para poupar tempo e gerir correctamente o código. Sem estes conceitos , não podemos fazer nada de projectos de linguagem de programação orientada a objectos. E também me concentrei na implementação, tópico de relacionamento do que na definição. Devemos ser capazes de distinguir classes, objectos, entidades, comportamentos, propriedades e relação entre eles durante a recolha de requisitos dos utilizadores. Depois , podemos organizar de forma adequada a codificação e os projectos.