Na herança não posso chamar getAtributo() se não for uma instância do próprio objeto?

Não sei se fui claro mas vou tentar explicar.

Se tenho uma classe chamada Veículo que possui atributo Placa, uma classe Carro que estende da classe Veículo e possui atributo cor e modelo.
Pq quando crio uma instância do tipo carro desse jeito:

Veiculo  carro = new Carro();

não posso setar o valor de Placa desse jeito:

carro.setPlaca("abc-1234");

só pode se montar um método construtor em Carro e setar o valor de placa no super(); por ele?

Isto ocorre porque seu método setPlaca está com private (estou supondo, já que você não postou o código fonte) sendo que o correto seria está com visibilidade protected.

:thumbup:

Cometi um erro, na verdade acabei colocando a dúvida ao contrário, não consigo setar os valores de cor e modelo que são atributos da classe carro.

Para setar esses valores tive que fazer um método construtor em carro assim:

public Carro(String cor, String modelo) {
		super();
		this.cor= cor;
		this.modelo= modelo;
	}

só assim consegui fazer um carro:

Veiculo  carro = new Carro("azul", "PALIO");  
carro.setPlaca("abc-1234");

Diz que não existe os métodos setCor e setModelo.

Então esse é o problema, o correto é protected ou você pode passa o valor através do construtor super();

:thumbup:

[quote=Shatemui]Cometi um erro, na verdade acabei colocando a dúvida ao contrário, não consigo setar os valores de cor e modelo que são atributos da classe carro.

Para setar esses valores tive que fazer um método construtor em carro assim:

public Carro(String cor, String modelo) {
		super();
		this.cor= cor;
		this.modelo= modelo;
	}

[/quote]

public Carro(String Placa, String cor, String modelo) {
		super(Placa);
		this.cor= cor;
		this.modelo= modelo;
	}

:!: :?:

[quote=Shatemui]só assim consegui fazer um carro:

Veiculo  carro = new Carro("azul", "PALIO");  
carro.setPlaca("abc-1234");

Diz que não existe os métodos setCor e setModelo.[/quote]

Diz onde :?: Você não criou (imaginou) eles na classe Carro :?:

:thumbup:

Criei, esse é o problema, estão lá mas mesmo assim diz que não existe, mas se crio Carro carro = new Carro(); funciona normal, mas se crio um tipo Veiculo e crio a instância de carro n funciona.

Posta seu código da classe Veiculo e Carro

Pense da seguinte forma: vc criou um objeto do tipo veiculo. veiculo possui os metodos setCor e setModelo? Se for realmente isso, precisa estudar melhor OO (o q vc precisa eh d um typecast).

Abracos.

Se o método só existe em carro e não existe em veículo, você deve fazer:

 ((Carro)veiculo).seuMetodo();

Lendo esse tópico você pode ter uma idéia de como funciona o polimorfismo.

Se você criou a classe Veiculo, e a classe Carro como sendo filha de veiculo (extends), todos os métodos que a classe veiculo tem a classe Carro tambem tem, pois ele recebeu da classe Veiculo por herança.