Herança de classes

3 respostas
P

Tenho 3 classes. Uma chamada locadora, outra chamada cliente e a outra chamada dvd.
Ela estão dessa forma.

import java.util.Scanner;

public class cliente extends locadora {
 	String nome="", telefone="", alugado="";

//REALIZANDO CADASTRO DE CLIENTE

public void cadastro()
       {
	        System.out.println("Nome: ");
	        nome= input.nextLine();
	        System.out.println("Telefone: ");
	        telefone= input.nextLine();
	}
//ALUGANDO DVD PARA CLIENTE
public void locar()
	{
		alugado=dvdnovo[numerodvd];
		saldo = -5.00;
		System.out.println("OPERACAO REALIZADA COM SUCESSO");
        }
//===================================================================//

import java.util.Scanner;

public class dvd 
{
////DECLARANDO VARIAVEIS E SCANNER PARA LER DADOS PELO CONSOLE		
	boolean locado=false;
	String nome="";
	int numerodvd;
	Scanner input=new Scanner(System.in);

	public void locar()
	{
	if(locado == false)
	{

		locado = true;
	}
}
//====================================================================//
import java.util.Scanner;

public class locadora
{
	public static void main(String[] args) 
	{
            cliente[] clientenovo = new cliente[30];
	    dvd[] dvdnovo = new dvd[30];
             
              //lendo opcao q o usuario vai digitar no menu

               Scanner sc = new Scanner(System.in);  
               menu = sc.nextInt(); 
		 		if(menu==1)
				{
		 			i++;
		 			clientenovo[i] = new cliente();
				}
				if(menu==2)
				{
					j++;
					dvdnovo[j] = new dvd();
				}
// alugando dvd
			System.out.println("Entre com o numero do Cliente");
			numerocliente = sc.nextInt();
			clientenovo[numerocliente].locar();
			System.out.println("Entre com o numero do DVD");
			numerodvd = sc.nextInt();
			dvdnovo[numerodvd].serlistado();
			dvdnovo[numerodvd].locar();
}

Minha duvida é a seguinte:
O problema está nas linhas 18 e 69.
Porque eu não consigo fazer a variavel nome da class cliente receber o valor do vetor dvdnovo[numerodvd] ?
As duas são strings. Nao entendi muita coisa sobre herança, só o basico, por isso coloquei um extends locadora na class dvd.

Porque não posso fazer essa atribuição?
Como posso fazer de forma q a variavel nome receba a string do vetor[]?

3 Respostas

P

esqueci de publicar as variaveis do contador numerodvd e numerocliente, mas estão todas certinhas no algoritmo (uso elas pra imprimir os dados do vetor).
A duvida realmente é só como fazer a variavel nome da class cliente receber a variave cliente[numerocliente] da class locadora… :cry:

diegosantiviago

Não concordo com sua hierarquia de herança.

public class cliente extends locadora

Um cliente é uma locadora?

Coloca o código certo, com todas as variáveis, senão dificulta.

J

amigão

sinto lhe informar que em seu código você cometeu uma série de

atrocidades…
Fico feliz em saber que você está procurando aprender, e espero

que esse seu código não tenha sido escrito proficionalmente rsrs.

Vamos ao que interessa.

Realmente o amigo diego tem rezão em dizer que a herança que você

fez está incoerente, quando a gente herda uma classe, quer dizer

que essa classe é diagamos, um filho da super classe ex:

Se você fala que:
cliente extends locadora
você está afirmando que o seu cliente É UMA locadora!!!
apósto que seu cliente não gostaria nada de ser chamado assim rsrs

vou dar um exemplo de uma herança que possui uma analogia correta.

Aluno extends Pessoa

estou dizerndo que um Aluno É UM Pessoa.

Casa extends Construcao

estou dizendo que uma Casa É UMA construção

Realmente é um pouco confuso de entender, mas procura uns

tutoriais na internet que tem bastante coisa sobre isso.

Outra atrocidade (uma das muitas, porém a mais gritante), foi você

ter colocado os nomes das classes iniciando com letra minúscula.
Realmente não dá erro!
Mas é padrão colocar o nome das classes iniciando em maiúsculo:

ao invés de locadora é Locadora
ao invés de cliente é Cliente

Ignorando os erros de arquitetura, vamos às perguntas que você

fez:

na linha 18

você não conseguiu fazer essa atribuição porque a variável alugado

é String e o array dvdnovo é Dvd (você declarou ele na linha 50)

… ou tro equivoco foi que, na linha 18 você está trabalhando com

a variável “alugado” não com a variável “nome”, responderei

baseado na variavel alugado, mas se for a variavel nome é a mesma

coisa:

Ou você tem que declarar a variavel alugado como sendo Dvd :

dvd alugado;

no lugar da declaração String na linha 4

ou você tem que criar uma variavel String na classe dvd e chamar

essa variavel na hora da atribuição, aí a sua linha 18 vai ficar

assim:

alugado=dvdnovo[numerodvd].minhaVariavelString;

acho que é isso…

na linha 69 você está só chamando um método, não intendi sua

duvida…

e vc pergundou denovo sobre a variavel nome, receber cliente …

não entendi, eu respondi a pergunta baseado no erro da linha 18,

porque a pergunta que você fez é um pouco incoerente…

Bom, respondi o que eu entendi, mas só pra te ajudar …
porque o meu conselho é:

deleta isso aí , dá uma estudada em herança, padrões da linguagem


aí você faz de novo …

falowsss …

Criado 3 de janeiro de 2009
Ultima resposta 3 de jan. de 2009
Respostas 3
Participantes 3