[Resolvido] Ajuda - Exercício básico polimorfismo

4 respostas
Alsberg

pessoal, nao to conseguindo compilar.
Se trata de um exercicio com uma classe abstrata Forma e duas concretas: FormaBidimensional e FormaTridimensional

O erro no compilador:
']' expected
na linha: formas[0] = new FormaBidimensional(9.0);

Parece que o erro se encontra depois que crio um vetor Forma pra acessar as subclasses polimorficamente, no seguinte trecho de código:

public class FormaTest
{	
	Forma[] formas = new Forma[2];
	
	formas[0] = new FormaBidimensional(9.0);
	formas[1] = new FormaTridimensional(4.0, 10.0);

se não for o suficiente, aqui vão todas as classes:

public abstract class Forma
{
	private double area;
	public abstract double obterArea();
	
	public Forma(double area)
	{
		this.area = area;
	}
	
	public double getArea()
	{
		return area;
	}
	
	public void setArea(double area)
	{
		this.area = area;
	}
}
public class FormaBidimensional extends Forma
{

	public FormaBidimensional(double area)
	{
		super(area);
	}
	
	@Override
	public double obterArea()
	{
		return super.getArea();
	}
	
	@Override
	public String toString()
	{
		return "Forma Bidimensional.";
	}
}
public class FormaTridimensional extends Forma
{
	private double volume;
	
	public FormaTridimensional(double area, double volume)
	{
		super(area);
		this.volume = volume;
	}
	
	@Override
	public double obterArea()
	{
		return super.getArea();
	}
	
	public double obterVolume()
	{
		return volume;
	}
	
	@Override
	public String toString()
	{
		return "Forma Tridimensional.";
	}
}
public class FormaTest
{	
	Forma[] formas = new Forma[2];
	
	formas[0] = new FormaBidimensional(9.0);
	formas[1] = new FormaTridimensional(4.0, 10.0);
	
	for(Forma currentForma : formas)
	{
		System.out.println(currentForma);
		System.out.printf( "Area: %.2f ",currentForma.obterArea() );
		if(currentForma instanceof FormaTridimensional)
		{
			FormaTridimensional forma = (FormaTridimensional) currentForma;
			System.out.printf( "Volume: %.2f ",forma.obterVolume() );
		}	
	}
}

4 Respostas

Almeidaah

O Amigo pode postar mais do código? tipo a classe que implementa isso? e as sub-classes?

Assim é complicado de dizer algo.

Alsberg

Atualizado.

Alsberg

Resolvido
Não acredito! esqueci da coisa mais básica: não criei a classe main!

Peço desculpas pelo incomodo e pela dúvida ridiculla ;/
Apagarei o post em breve

(Obrigado por tentar ajudar Almeidaah)

Almeidaah

É, percebi isso de cara,

public static void main(String [] args){

//liberte-se

}

Conseguiu arrumar tudo? há algo que possamos ajudar?

Criado 6 de abril de 2011
Ultima resposta 8 de abr. de 2011
Respostas 4
Participantes 2