Ola, antes de tudo, obrigado pela atenção. Vi vários post relacionado a polimorfismo mas nenhum me respondeu porque o meu código não funciona. Este é apenas um teste, estou começando em java...
Criei uma classe Shape que será a superclasse de Triangule, Circle, Square e Amoeba.
Classe Shape :
public class Shape {
public void rotate(){
System.out.println("Shape rotate");
}
public void playSound(){
System.out.println("Shape sound");
}
}
Classe Circle:
public class Circle extends Shape {
private String nome = "Circle";
public String getNome() {
return nome;
}
}
As classes [color=blue]Square[/color] e [color=blue]Triangule[/color] tem o mesmo código da classe Circle, mudando é claro, o nome de cada figura.
Classe Amoeba (Esta sobrepõe os métodos de Shape):
public class Amoeba extends Shape {
private String nome = "Amoeba";
public String getNome() {
return nome;
}
public void rotate() {
System.out.println("Amoeba rotate");
}
public void playSound() {
System.out.println("Amoeba sound");
}
}
Em minha classe teste (a que tem o main), fiz da seguinte forma:
Shape square = new Square();
Shape triangule = new Triangule();
Shape circle = new Circle();
Shape amoeba = new Amoeba();
System.out.println(triangule.getNome());
Porém [color=blue].getNome[/color] não é encontrado como método de triangule. Alias, não consegui acessar nada de nenhum deles (triangule, circle, square ou amoeba). Só funciona se eu não usar o [color=blue]Shape[/color] como tipo, assim: [color=blue]Square square = new Square()[/color];
Tentei também desta forma:
Shape[] shape = new Shape[4];
shape[0] = new Square();
shape[1] = new Triangule();
shape[2] = new Circle();
shape[3] = new Amoeba();
System.out.println(shape[0].getNome);
Não funcionou também. Não consigo ver o erro... Se alguém puder me dar uma luz... Vi alguns exemplos pela net mas mesmo assim não sei onde está o erro. Sei... é vergonhoso...