Tem-um

9 respostas
LPJava

ae pessoal usando a teoria de TEM-UM fiz a sintaxe abaixo, porem uma execeção é lançada pq? aonde errei?

public class Animal{}
	
class Cavalo extends Animal{
	Redia r;
	public void red(){
	r.tam();
	}
}
	
class Redia{
		public void tam(){
			System.out.println("tamanho 10");
		}
}
	
class AnimalTes{
		public static void main(String args[]){
			Cavalo c = new Cavalo();
			c.red();
		}
	}

nullpointerException… ???

9 Respostas

chicocx

No codigo abaixo:

camilolopes:

public class Animal{}
	
class Cavalo extends Animal{
	Redia r;
	public void red(){
	r.tam();
	}
}

...
			c.red();

...

nullpointerException… ???

você não está instanciando Redia! Apenas declarando.
Faça:

Redia r = new Redia();
LPJava

mais ai eu no to diznedo q r é um objeto de Redia nao?

chicocx

sim está. É justamente o que vc quer!

LPJava

eu quero usar o metodo da class Redia usando a ideia de TEM-UM. so isso mais ele lanca uma exceção :frowning:

chicocx

Para você utilizar um método (não statico) de uma classe vc DEVE instanciá-la antes…

ViniGodoy

Camilo, você está fazendo confusão.

As relações sempre ocorre entre DUAS classes. Nesse caso, onde está a sua relação tem um?

Cavalo TEM UMA Rédia.
Rédia é um atributo do cavalo, não uma superclasse. Portanto, a relação é do tipo TEM UM.

E a relação é um?
Cavalo É UM Animal.
Animal é superclasse de cavalo. Portanto, todo cavalo é um animal.

O fato de você fazer r = new Redia() simplemente diz a r qual a rédia que o Cavalo tem.

O que o colega falou é verdade, você sempre tem que instanciar um objeto da classe antes de usa-la. Se você não estanciar você está dizendo:
“Este cavalo pode ter uma rédia, mas ainda não sei quem é ela.”

Por isso quando você tenta obter o tamanho o java reclama com um NullPointerException. É como se ele te dissesse:
“Ei, se você não sabe qual é a rédea do cavalo, como você quer que eu diga qual o tamanho dela?”

LPJava

hum… saquei faltou entao eu dar um new para criar um objeto de redia e dar essa redia ao cavalo que é um animal certo?

ViniGodoy

Isso mesmo. :slight_smile:

LPJava

po… que viaje aquela kathy extends Animal nao falou isso disse que daquela forma tava correto alias pode ser mais um erro de traducao na segunda edicao hehe!Vinny vc ta sumido rapa!!apareça meu brother!! to revisando o livro quero ver se em abril sai!!! abração :smiley:

Criado 24 de janeiro de 2007
Ultima resposta 25 de jan. de 2007
Respostas 9
Participantes 3