iniciante Posted December 30, 2009 at 03:32 PM Report Share #303210 Posted December 30, 2009 at 03:32 PM eu tendo uma classe chamada Pessoa não posso ter 2 subclasses desta classe? por exemplo: tenho public class Pessoa e fiz uma sub class desta class assim public class Funcionario extends Pessoa. e agora queria fazer outra sub class da class pessoa assim.public class Director extends Pessoa...mas não me deixa! o que eu quero fazer nao é possivel? RC Link to comment Share on other sites More sharing options...
felixs Posted December 30, 2009 at 03:58 PM Report Share #303220 Posted December 30, 2009 at 03:58 PM Em Java, tal como na maioria das linguagens por objectos, não podes ter múltipla-herança. Das linguagens com que trabalhei, a única que permite isso é C++. Para resolver o teu problema há várias patterns que são usadas (estou com perguiça para procurar), mas há-de ser algo com interfaces ou delegação. B) Link to comment Share on other sites More sharing options...
Knitter Posted December 30, 2009 at 04:44 PM Report Share #303235 Posted December 30, 2009 at 04:44 PM Herança múltipla é quando um filho tem dois pais, não quando um pai tem dois filhos, como parece ser o caso B) Podes ter quantas sub-classes de uma classe quiseres, aliás, essa é a base da herança em POO, um classe ter as sub-classes que sejam necessárias. O erro "mas não deixa" não é bem um erro de programação que se consiga resolver B), não deixa porquê, que erro te é mostrado pelo compilador/IDE? www.sergiolopes.eu Link to comment Share on other sites More sharing options...
felixs Posted December 30, 2009 at 04:55 PM Report Share #303236 Posted December 30, 2009 at 04:55 PM Oops... Li atravessado e percebi mal. ? O Knitter tem razão. Isso devia funcionar com qualquer linguagem de programação. É necessária mais informação para podermos ajudar-te. 🙂 Link to comment Share on other sites More sharing options...
Pontus Posted December 30, 2009 at 05:03 PM Report Share #303238 Posted December 30, 2009 at 05:03 PM já agora qual o IDE que estás a usar? Link to comment Share on other sites More sharing options...
iniciante Posted December 30, 2009 at 05:32 PM Author Report Share #303251 Posted December 30, 2009 at 05:32 PM tou a utilizar o netbeans podem me dizer como é que faso uma coisa tao simples como um scan de um nome dentro de um case? eu tenho isto : case 1: System.out.println("Introduza um nome para o Funcionario:"); String nome = teclado.nextLine(); break; e ele imprime o introduza um nome mas passa a frente e n para para eu inserir o nome -.- RC Link to comment Share on other sites More sharing options...
iniciante Posted December 30, 2009 at 05:35 PM Author Report Share #303252 Posted December 30, 2009 at 05:35 PM eu agr ja alterei o programa todo e começei a fazer de outra maneira =/ mas se eu metexe Director extends Funcionario ja deixava so que trocavame os dados todos RC Link to comment Share on other sites More sharing options...
iniciante Posted December 31, 2009 at 02:03 PM Author Report Share #303428 Posted December 31, 2009 at 02:03 PM bem ja resolvi o meu problema de scan dentro do case...para o caso de alguma vez alguem precisar aqui fica a resposta!! switch (opcao) { case 1: System.out.println("\n Introduza um nome:"); teclado.nextLine(); // aqui limpa o buffer String nome = teclado.nextLine(); opcao=0; } Boas Festas RC Link to comment Share on other sites More sharing options...
Knitter Posted December 31, 2009 at 02:47 PM Report Share #303436 Posted December 31, 2009 at 02:47 PM Para que alguém te possa ajudar convinha que fosses mais explicito no que escreves e que desses mais informações. Ainda não respondeste à minha pergunta inicial, afinal qual era a mensagem de erro que obtinhas, porque o que indicavas estar a fazer estava correcto. Depois "scan de um nome dentro de um case" não é algo que se possa entender sem se estar dentro do contexto. A própria frase peca em fornecer sentido. Nem o código que colocaste ajuda já que a variável teclado aparece do nada, pode ser uma instância de uma infinidade de classes diferentes, por acaso, porque este tipo de perguntas é comum e o tipo de classes que se usam também, tenho até ideia da classe que estás a usar e dos problemas associados ao método, que estou a adivinhar qual é, nem isso nos informas. Convenhamos, se informação a mais pode ser desnecessário, informação a menos é que não dá. Falando por mim, ainda não sou capaz de ler pensamentos de pessoas que estão a tentar transmitir ideias através de um fórum de discussão... Pegando no último problema, ou na forma como o resolveste, limpar o buffer desse modo é um pouco martelar uma solução. Se o buffer tem dados, então ou são importantes e devias lê-los ou não são importantes e nem lá deviam estar. Uma vez que não dizes o que estás a usar, suponho que o problema tem origem numa leitura anterior, e que no buffer estar uma mudança de linha a mais. Se for esse o caso, na leitura anterior deverias remover a mudança de linha. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
iniciante Posted January 2, 2010 at 11:47 AM Author Report Share #303646 Posted January 2, 2010 at 11:47 AM Para que alguém te possa ajudar convinha que fosses mais explicito no que escreves e que desses mais informações. Ainda não respondeste à minha pergunta inicial, afinal qual era a mensagem de erro que obtinhas, porque o que indicavas estar a fazer estava correcto. Depois "scan de um nome dentro de um case" não é algo que se possa entender sem se estar dentro do contexto. A própria frase peca em fornecer sentido. Nem o código que colocaste ajuda já que a variável teclado aparece do nada, pode ser uma instância de uma infinidade de classes diferentes, por acaso, porque este tipo de perguntas é comum e o tipo de classes que se usam também, tenho até ideia da classe que estás a usar e dos problemas associados ao método, que estou a adivinhar qual é, nem isso nos informas. Convenhamos, se informação a mais pode ser desnecessário, informação a menos é que não dá. Falando por mim, ainda não sou capaz de ler pensamentos de pessoas que estão a tentar transmitir ideias através de um fórum de discussão... Pegando no último problema, ou na forma como o resolveste, limpar o buffer desse modo é um pouco martelar uma solução. Se o buffer tem dados, então ou são importantes e devias lê-los ou não são importantes e nem lá deviam estar. Uma vez que não dizes o que estás a usar, suponho que o problema tem origem numa leitura anterior, e que no buffer estar uma mudança de linha a mais. Se for esse o caso, na leitura anterior deverias remover a mudança de linha. eu repondi a tua ultima pergunta! o programa não indicava qualquer erro..apenas quando compilava, nao deixava! deixava se eu mete-se Director extends Funcionario , mas Director extends Pessoa nao deixava..por isso recorri ao forum! quando a minha ultima duvida, eu tentei expor o melhor possivel o meu problema..ate meto um exemplo de codigo! e acho que qql pessoa que faça um scan em java (pelo menos iniciantes em programação como eu) sabe que para tal é preciso colocar esta instrução "Scanner teclado = new Scanner (System.in);" de onde aparece o teclado ou de onde poderia aparecer qql outro nome dai nao achar necessário chegares tao longe como "ainda não sou capaz de ler pensamentos de pessoas que estão a tentar transmitir ideias através de um fórum de discussão..."! RC Link to comment Share on other sites More sharing options...
Knitter Posted January 2, 2010 at 02:07 PM Report Share #303662 Posted January 2, 2010 at 02:07 PM eu repondi a tua ultima pergunta! o programa não indicava qualquer erro..apenas quando compilava, nao deixava! Um programa quando não compila informa sempre de um erro. Neste caso, dado que usas o NetBeans IDE, ou o erro é mostrado a vermelho no local onde está, com uma indicação na barra lateral esquerda do editor de código. Ou ao executares/compilares o programa, o erro é mostrado na janela de output, que se não alteraste as definições aparece no fundo do IDE. De qualquer modo existe sempre um erro que te é mostrado e esse erro é importante para se poder ajudar. deixava se eu mete-se Director extends Funcionario , mas Director extends Pessoa nao deixava..por isso recorri ao forum! Isto não faz sentido, o erro terá de estar noutro lado, mas sem a mensagem de erro é complicado saber o que se está a passar. Tentando adivinhar, possivelmente o problema estará nos construtores, mas posso estar completamente errado. quando a minha ultima duvida, eu tentei expor o melhor possivel o meu problema..ate meto um exemplo de codigo! e acho que qql pessoa que faça um scan em java (pelo menos iniciantes em programação como eu) sabe que para tal é preciso colocar esta instrução "Scanner teclado = new Scanner (System.in);" Apenas digo que, mesmo tentando expor o melhor possível, é preciso algumas informações que não deste. O código é pouco e não tem os pontos importante, como o caso do tipo de variável. Por acaso tem sido comum ver o uso da classe Scanner mas essa nem é a classe mais usada para ler dados do teclado, o único local onde uso a classe é aqui neste fórum quando falam nisso, de resto todo o código que faço usa outro tipo de leitura e outros fóruns onde participo não é comum aparecerem iniciantes a usar esta classe. Scanner é uma classe para escrita rápida, mas para criar código funcional e que não dê os problemas que tiveste relacionados com o buffer, Scanner é uma péssima classe. Para quem está a iniciar parece ser a que por aqui mais se recomenda mas é uma classe que esconde tudo o que é importante saber para leitura de dados através de teclado. Tens de perceber que quem lê as mensagens não tem o teu código, não está a ver o tutorial ou o projecto que estás a fazer e muito facilmente tem uma visão diferente e conhecimentos diferentes que atrapalham a comunicação. Não podes assumir que é normal alguém saber parte do que tens no código, por muito comum que essa parte te pareça ser. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Baderous Posted January 2, 2010 at 04:40 PM Report Share #303689 Posted January 2, 2010 at 04:40 PM Knitter, qual é a tua sugestão para substituição da classe Scanner? Alguma das classes de streams de leitura existentes (possivelmente aninhadas)? Link to comment Share on other sites More sharing options...
Knitter Posted January 2, 2010 at 05:52 PM Report Share #303734 Posted January 2, 2010 at 05:52 PM Knitter, qual é a tua sugestão para substituição da classe Scanner? Alguma das classes de streams de leitura existentes (possivelmente aninhadas)? Sempre o uso de streams de leitura, que não a classe Scanner, preferencialmente com construção de streams com buffers. Por exemplo, para ler texto: new BufferedReader(new InputStreamReader(<stream origem>)); Mas dependerá do que se pretende fazer, a classe Scanner tem alguns métodos úteis para despachar código de leitura de dados pelo teclado, mas mais que isso e torna-se trabalhoso manter toda a leitura, remover dados do buffer interno, etc. Um bufferedreader, uma leitura linha a linha, e depois tratar os dados de acordo com a aplicação. Além disso, usar streams primeiro e só depois a classe Scanner obriga-te a aprender o que estás a fazer, em oposição a aprender a usar meia dúzia de métodos da classe. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now