[Resolvido]Ajuda com herança

8 respostas
O

Pessoal estou fazendo um trabalho para a faculdade, porém comecei a tropeçar em um erro de “implicit super constructor is undefined”, fiz algo nas classes que herdam e o erro parou…
Porém quando passo os valores como parâmetro, no meu console não é mostrado nada… Alguém pode me ajudar???

class MeioTransporte{ //classe meio de transporte
	
	//variaveis de instancia
	int capacidadePassageiros; 
	int capacidadeCarga;
	int consumo;
	float manutencao;
	int fabricacao;
	int combustivel; //1= normal(alcool,gasolina) e 2 GNV...
	int numPassageiros;
	
	
	MeioTransporte(int cp,int cc,int cons, float manut,int fab,int comb,int np){//construtor
		capacidadePassageiros=cp;
		capacidadeCarga=cc;
		consumo=cons;
		manutencao=manut;
		fabricacao=fab;
		combustivel=comb;
		numPassageiros=np;
	}
	
	int get_ano_fab(){ //retorna o ano de fabricação.
		return fabricacao;
	}
	
	int getcapacidadePassageiros(){ //retorna a capacidade maxima de passageiros.
		return capacidadePassageiros;
	}
	
	int getconsumo(){ //retorna o consumo.
		return consumo;
	}	
	
	int get_capacidadeCarga(){ //retorna a capacidade de carga. 
		return capacidadeCarga;
	}
	
	float get_manutencao(){ //retorna o custo da manutenção.
		return manutencao;
	}	
	
	int get_num_passageiros(){ //retorna o numero de passageiros atual...o veiculo nem sempre terá o máximo de passageiros fazendo a eficiencia variar...
		return numPassageiros;
	}	
	
	int get_combustivel(){ // retorna o tipo de combustivel...1=gasolina e alcool, 2=gnv...
		return combustivel;
	}
		
	int Idade(){// calcular o número de anos do veiculo.
		int valor;
		int ano_atual=2012;
		valor= ano_atual-get_ano_fab();
		return valor;
	}	
	
}

class Carro extends MeioTransporte{
	
	public Carro(int cp, int cc, int cons, float manut, int fab, int comb, int np) {
		super(cp, cc, cons, manut, fab, comb, np);
		// TODO Auto-generated constructor stub
	}

	int eficiencia_carro(){
		
		
		float f=get_manutencao();
		int valor_manut = (int) f;//transformando manutenção que é float em integer...
		
		int valor;
		if (get_combustivel()==1){
			valor= ((get_num_passageiros()*getconsumo()*((1*10/100)*get_capacidadeCarga()))/valor_manut*Idade());
			System.out.println("entrou aqui");//apenas teste...
			return valor;
		}
		else{
			valor= ((get_num_passageiros()*getconsumo()*((1*15)/100)*((1*10)/100))*get_capacidadeCarga())/(valor_manut*Idade()); //diferente p/gnv...
			return valor;
		}
	}

		
	
}		
	
	
class Moto extends MeioTransporte{
	
	public Moto(int cp, int cc, int cons, float manut, int fab, int comb, int np) {
		super(cp, cc, cons, manut, fab, comb, np);
		// TODO Auto-generated constructor stub
	}

	//public Moto(int cp,int cc,int cons, float manut,int fab,int comb,int np){
	//super(cp,cc,cons,manut,fab,comb,np);	
	//}
	
	
	int eficiencia_moto(){
		
		
		float f=get_manutencao();
		int valor_manut = (int) f;//transformando manutenção que é float em integer...
		
		int valor;
		if (get_combustivel()==1){
			valor= ((get_num_passageiros()*getconsumo()*((1*10/100)*get_capacidadeCarga()))/valor_manut*Idade());
			return valor;			
		}
		else{
			return -1;//indica erro !!!
		}
	}
}
	

public class transporte {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Carro c= new Carro(5,300,10,1000,2001,2,5);
		c.Idade(); 
                c.eficiencia_carro();

	}

}

Obrigado…

8 Respostas

khaoz

Opa, blz ?

Vamos lá, este link pode te ajudar bastante.

Abraço.

L

khaoz:
Opa, blz ?

Vamos lá, este link pode te ajudar bastante.

Abraço.

Essa foi boa!

L

A dúvida é imprimir no console? Tente isso:

public class transporte {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        Carro c= new Carro(5,300,10,1000,2001,2,5);  
        System.out.println(c.Idade());   
        System.out.println(c.eficiencia_carro());  
  
    }  
  
}
jeffev
luzales:
A dúvida é imprimir no console? Tente isso:
public class transporte {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        Carro c= new Carro(5,300,10,1000,2001,2,5);  
        System.out.println(c.Idade());   
        System.out.println(c.eficiencia_carro());  
  
    }  
  
}

Tente fazer o que o nosso amigo luzales acima disse, pois o seu main esta somente executando os métodos c.Idade() e c.eficiencia_carro(), porém esse métodos só retornam o valor, deve ser por isso que não imprime.

Depois poste se funcionou, caso afirmativo não esqueça de colocar [RESOLVIDO] no assunto do tópico.

Abç.

khaoz

O erro que você reporta esta diretamente relacionado ao fato você definir um construtor com parâmetros. Isso faz com que o construtor default (sem parâmetros) deixe de existir e qualquer chamada implicita a ele vai gerar erro. Eu considero boa prática semrpe declarar um construtor sem parâmetros, mesmo que você não vá declarar um novo (apesar de que não sou programador Java, então pode não ser uma boa prática :wink: ):

public class Foo {
    public Foo() {
    }

    public Foo(String msg) {
    }
}

public class Bar extends Foo {
    public Bar() {
    }
}

Analisei seu código, inclusive copiei, compilei e rodei e pelo que vi não é este o seu problema, pois seu código roda de boa. Só não são impressos valores na classe transporte porque você tem que utilizar um System.out.println conforme indicado no post acima.

Abraço.

O

Obrigado pela ajuda pessoal , era esse mesmo o erro … Era só usar o system.out.println…
Quanto a questão da pesquisa eu já havia pesquisado no google antes de postar a dúvida, porém , acho que depois de 2 horas programando , fiquei meio desatento…
Tanto que a solução era bem simples…

Obrigado a todos.

khaoz

Retiro o que eu disse com o “Você não quer aprender a pescar”, inclusive editei o post para não ficar agressivo. Todo mundo começa pelo começo e acho que eu tava com o ovo direito no lugar do esquerdo na hora da resposta, my bad. :slight_smile:

O

Preocupa não, levei na boa khaoz…
abrçs e obrigado pela ajuda.

Criado 6 de agosto de 2012
Ultima resposta 7 de ago. de 2012
Respostas 8
Participantes 4