Olá,
Estou tentando usar herança mas creio que esteja usando de forma errônea.
Criei uma Superclass com algumas váriaveis e estou tentando usá-las em Subclasses, o problema
é que não está lendo a segunda Subclass, quando eu compilo aparece apenas os dados da primeira.
O que estou fazendo de errado ?
Desde já, obrigado pela atenção, abraços.
publicclassSuper{staticStringnome="",endereco="",telefone="";}classPessoaFisicaextendsSuper{publicstaticvoidmain(String[]args){nome="Fulano";endereco="Av. São Paulo";telefone="9999-9999";System.out.println("Nome: "+nome+"\nEndereço: "+endereco+"\nTelefone: "+telefone);}}classPessoaJuridicaextendsSuper{publicstaticvoidmain(String[]args){nome="Ciclano & Cia";endereco="Av. Rio de Janeiro";telefone="3333-3333";System.out.println("Nome: "+nome+"\nEndereço: "+endereco+"\nTelefone: "+telefone);}}
cara, não manjo quase nada, mas acho que ele não mostra as informações da segunda porque quando você você executa esta chamando o main da 1º classe (java PessoaFisica), quando uma classe é executada ela só chama um main, para chamar também o da classe PessoaJuridica, você deve deixar isso explicito em PessoaFisica, basta adicionar o comando PessoaJuridica.main(null); no final do metodo main de PessoaFisica e quando executar use o comando java PessoaFisica
Acho q é isso, se eu tiver dito besteira foi mal ae…
gabrielmassote
Tudo bem mid_?
fiz o teste sobre os main aqui, e o viniciusms1 tem razao.
ele executa o primeiro main o segunda nunca vai executar. Entao pense em uma outra forma de fazer o codigo funcionar. Qualquer coisa estamos a disposicao.
wswillian
Faça assim:
publicclassSuper{privateStringnome;privateStringendereco;privateStringtelefone;//métodos gets publicStringgetNome(){returnthis.nome;}publicStringgetEndereco(){returnthis.endereco;}publicStringgetTelefone(){returnthis.telefone;}//métodos sets publicvoidsetNome(Stringnome){this.nome=nome;}publicvoidsetEndereco(Stringendereco){this.endereco=endereco;}publicvoidsetTelefone(Stringtelefone){this.telefone=telefone;}}classPessoaFisica{publicstaticvoidmain(String[]args){SuperobjSuper=newSuper();objSuper.setNome("Fulano");objSuper.setEndereco("Av. São Paulo");objSuper.setTelefone("9999-9999");System.out.println("Nome: "+objSuper.getNome()+"\nEndereço: "+objSuper.getEndereco()+"\nTelefone: "+objSuper.getTelefone());}}classPessoaJuridica{publicstaticvoidmain(String[]args){SuperobjSuper=newSuper();objSuper.setNome("Ciclano & Cia");objSuper.setEndereco("Av. Rio de Janeiro");objSuper.setTelefone("3333-3333");System.out.println("Nome: "+objSuper.getNome()+"\nEndereço: "+objSuper.getEndereco()+"\nTelefone: "+objSuper.getTelefone());}}
Assim fica mais legível…
Qualquer coisa posta de novo… Abração!
wswillian
… não é uma boa prática de programação colocar várias classes num só arquivo JAVA. Procure colocar as classes filhas em arquivos separados depois instancie num arquivo assim: Super.java
publicclassPessoaFisica{publicstaticvoidmain(String[]args){SuperobjSuper=newSuper();objSuper.setNome("Fulano");objSuper.setEndereco("Av. São Paulo");objSuper.setTelefone("9999-9999");System.out.println("Nome: "+objSuper.getNome()+"\nEndereço: "+objSuper.getEndereco()+"\nTelefone: "+objSuper.getTelefone());}}
Pessoa Juridica.java
publicclassPessoaJuridica{publicstaticvoidmain(String[]args){SuperobjSuper=newSuper();objSuper.setNome("Ciclano & Cia");objSuper.setEndereco("Av. Rio de Janeiro");objSuper.setTelefone("3333-3333");System.out.println("Nome: "+objSuper.getNome()+"\nEndereço: "+objSuper.getEndereco()+"\nTelefone: "+objSuper.getTelefone());}}
Lembrando que todas devem ficar no mesmo pacote ou diretório.
M
mid_
wswillian:
… não é uma boa prática de programação colocar várias classes num só arquivo JAVA. Procure colocar as classes filhas em arquivos separados depois instancie num arquivo assim: Super.java
publicclassPessoaFisica{publicstaticvoidmain(String[]args){SuperobjSuper=newSuper();objSuper.setNome("Fulano");objSuper.setEndereco("Av. São Paulo");objSuper.setTelefone("9999-9999");System.out.println("Nome: "+objSuper.getNome()+"\nEndereço: "+objSuper.getEndereco()+"\nTelefone: "+objSuper.getTelefone());}}
Pessoa Juridica.java
publicclassPessoaJuridica{publicstaticvoidmain(String[]args){SuperobjSuper=newSuper();objSuper.setNome("Ciclano & Cia");objSuper.setEndereco("Av. Rio de Janeiro");objSuper.setTelefone("3333-3333");System.out.println("Nome: "+objSuper.getNome()+"\nEndereço: "+objSuper.getEndereco()+"\nTelefone: "+objSuper.getTelefone());}}
Lembrando que todas devem ficar no mesmo pacote ou diretório.
Obrigado pela ajuda, mas no caso eu não quero usar métodos, apenas herança.
M
mid_
viniciusms1:
cara, não manjo quase nada, mas acho que ele não mostra as informações da segunda porque quando você você executa esta chamando o main da 1º classe (java PessoaFisica), quando uma classe é executada ela só chama um main, para chamar também o da classe PessoaJuridica, você deve deixar isso explicito em PessoaFisica, basta adicionar o comando PessoaJuridica.main(null); no final do metodo main de PessoaFisica e quando executar use o comando java PessoaFisica
Acho q é isso, se eu tiver dito besteira foi mal ae…
Realmente, adicionei PessoaJuridica.main(null); ao final da classe PessoaFisica e funcionou, obrigado a todos pela atenção, abraços.