Problema com Herança

Ola pessoal, bom dia, andei dando uma pesquisada e não obtive susseso…

Tenho essas 3 classes(BEAN)

[code]package exemplo.bean;

public class veiculo
{
private String marca;
private int ano;

public String getMarca()
{
    return marca;
}

public void setMarca(String marca)
{
    this.marca = marca;
}

public int getAno()
{
    return ano;
}

public void setAno(int ano)
{
    this.ano = ano;
}

}[/code]

[code]package exemplo.bean;

public class barco extends veiculo
{
private double comprimento;
private double potenciaMotor;

public double getComprimento()
{
    return comprimento;
}

public void setComprimento(double comprimento)
{
    this.comprimento = comprimento;
}

public double getPotenciaMotor()
{
    return potenciaMotor;
}

public void setPotenciaMotor(double potenciaMotor)
{
    this.potenciaMotor = potenciaMotor;
}

}[/code]

[code]package exemplo.bean;

public class automovel extends veiculo
{
private String cor;

public String getCor()
{
    return cor;
}

public void setCor(String cor)
{
    this.cor = cor;
}

}[/code]

e a seguinte pagina:

[code]<%@ page contentType=“text/html; charset=iso-8859-1” language=“java” import=“java.sql.*” errorPage=""%>

<%@ page language=“java” import=“exemplo.bean.veiculo”%>
<%@ page language=“java” import=“exemplo.bean.barco”%>
<%@ page language=“java” import=“exemplo.bean.automovel”%>

<%
veiculo[] est = new veiculo[6];
est[0] = new barco();
est[1] = new automovel();

est[0].setComprimento(1.8);
est[1].setCor(“azul”);


[/code]

e o seguinte erro:
[b]
HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 13 in the jsp file: /paginas/trab/01.jsp
Generated servlet error:
The method setComprimento(double) is undefined for the type veiculo

An error occurred at line: 13 in the jsp file: /paginas/trab/01.jsp
Generated servlet error:
The method setCor(String) is undefined for the type veiculo

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

[/b]

O que eu estou precisando é o seguinte criar um array de veiculos e especificar depois quais os tipos de veiculos estarão nas posições do array de veiculo… tipo na posição 0 do array vai ser um barco que herda o veiculo… e na posição 1 do array vai ser um automovel que herda o veiculo…

Obs. precisa ser em um array e terão mais tipos de veiculos… o problema eh que não estou conseguindo acessar os medodos das classes que herdao o veiculo… se eu tentar acessar um metodo da classe veiculo ele funciona normal !!!

Estou usando o tomcat 5.5.20 e jsdk 1.5.0_04

Desde ja grato !!

desta forma que você quer fazer vc teria então que fazer um cast no objeto veiculo, algo ± assim

if (veiculo[0] instanceof barco) {
   barco barco = (barco) veiculo[0];
}

entendeu ?

Se vai trabalhar de forma polimórfica com os objetos, não seria melhor então definir os métodos na classe veículo?

Você não está conseguindo acessar porque sua referência é do tipo veículo e sua instância de outro tipo, mas veículo não possui os métodos que você está tentando acessar.

[quote=ualex]desta forma que você quer fazer vc teria então que fazer um cast no objeto veiculo, algo ± assim

if (veiculo[0] instanceof barco) {
   barco barco = (barco) veiculo[0];
}

entendeu ?[/quote]

esse foi o erro que aconteceu…
[b]
org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 13 in the jsp file: /paginas/trab/01.jsp
Generated servlet error:
veiculo cannot be resolved
[/b]

ai eu tentei colocar assim:

if (veiculo[0] instanceof barco) {
   barco barco = (barco) est[0];
}

e mesmo assim não consigo referenciar os metodos do barco nem na variavel barco e nem na est[0]…

Mais alguma idea…

[quote=Rafael Nunes]Se vai trabalhar de forma polimórfica com os objetos, não seria melhor então definir os métodos na classe veículo?

Você não está conseguindo acessar porque sua referência é do tipo veículo e sua instância de outro tipo, mas veículo não possui os métodos que você está tentando acessar.

[/quote]

Mais ai eu vou perder a ideia de orientação a objeto… pois no meu automovel existem metodos que no meu barco não existem…

Mais alguma ideia ??

Que idéia de orientação a objeto você vai perder?
Se você quer utilizar polimorfismo, então a referência deve conter os comportamentos que você vai utilizar da instância.

Se você não pode definir o método na classe veículo, então a referência não tem por que ser de veículo.