OOPs: Herança e Polimorfismo

Falemos em conjunto de herança e polimorfismo

neste blogue, Vou escrever um pouco de profundidade dentro do mais importante conceito de Programação Orientada para Objectos chamado herança . Poderá encontrar artigos sobre este tema em todo o lado. Mas encontrei algo em falta em conjunto. Isto significa que muitos artigos apenas definem herança e exemplos , não explicam como implementar em projectos da vida real. Mesmo, em herança , outro conceito também vem com . Chama-se polimorfismo. Por isso, digo que se quisermos compreender completamente sobre herança, temos de compreender o conceito de polimorfismo em conjunto. Isso dá-nos maior clareza sobre como implementar em projectos. Tento também descrever quando precisamos de herdar e porquê. Aqui, tomo todos os exemplos em linguagem de programação java porque penso que dá um exemplo mais claro para compreender. Vamos começar a definição:

Definição:

  1. Herança : É um mecanismo em que um objecto adquire todas as propriedades e comportamentos de um objecto pai. É uma parte importante dos OOPs (Object Oriented programming system).
  • subclasse (child) – a classe que herda de outra classe. Também é chamada uma classe derivada, classe estendida, ou classe filha.
  • superclasse (pai) – a classe que é herdada de.Também é chamada uma classe base ou uma classe pai.

Exemplo:

class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}
class Pig extends Animal {
public void animalSound() {
System.out.println("The pig says: wee wee");
}
}
class Dog extends Animal {
public void animalSound() {
System.out.println("The dog says: bow wow");
}
}

1.1. Porquê usar a herança em java

  • Para a Substituição do Método (para que o polimorfismo em tempo de execução possa ser alcançado).
  • Para a Reusabilidade do Código.

1.2. Tipos de herança em java:

a. Herança Única

b. Herança multinível

c. Herança Hierárquica

d. Herança Múltipla

e. Herança Híbrida

Fotos de todos os tipos dão mais clareza . Estes são

div>>

/div>

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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *