Reveja a seguir o exemplo de polimorfismo e amarração dinâmica em C++. Estude este exemplo e tente escrevê-lo em Java na célula abaixo.
Algumas coisas importantes:
virtual
em C++.#include <iostream>
class Poligono {
private:
int altura;
int largura;
public:
Poligono(int altura, int largura) {
this->altura = altura;
this->largura = largura;
}
int getAltura() {
return altura;
}
int getLargura() {
return largura;
}
virtual float getArea() {
return 0;
}
};
class TrianguloRetangulo : public Poligono {
public:
TrianguloRetangulo(int altura, int largura) : Poligono(altura, largura) {
}
float getArea() {
return getAltura() * getLargura() / 2;
}
};
class Retangulo : public Poligono {
public:
Retangulo(int altura, int largura) : Poligono(altura, largura) {
}
float getArea() {
return getAltura() * getLargura();
}
};
Poligono *tr = new TrianguloRetangulo(6, 10);
Poligono *rt = new Retangulo(6, 10);
std::cout << "Área do triangulo retângulo: " << tr->getArea() << std::endl;
std::cout << "Área do retângulo: " << rt->getArea() << std::endl;
In [ ]:
In [1]:
public class Poligono {
private int altura;
private int largura;
public Poligono(int altura, int largura) {
this.altura = altura;
this.largura = largura;
}
public int getAltura() {
return altura;
}
public int getLargura() {
return largura;
}
public float getArea() {
return 0;
}
}
Out[1]:
In [2]:
public class TrianguloRetangulo extends Poligono {
public TrianguloRetangulo(int altura, int largura) {
super(altura, largura);
}
public float getArea() {
return getAltura() * getLargura() / 2;
}
}
Out[2]:
In [3]:
public class Retangulo extends Poligono {
public Retangulo(int altura, int largura) {
super(altura, largura);
}
public float getArea() {
return getAltura() * getLargura();
}
}
Out[3]:
In [4]:
Poligono tr = new TrianguloRetangulo(6, 10);
Poligono rt = new Retangulo(6, 10);
System.out.println("Área do triangulo retângulo: " + tr.getArea());
System.out.println("Área do retângulo: " + rt.getArea());
Out[4]: