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.
public class Super {
static String nome="", endereco="", telefone="";
}
class PessoaFisica extends Super {
public static void main(String[] args) {
nome="Fulano";
endereco="Av. São Paulo";
telefone="9999-9999";
System.out.println("Nome: "+nome+"\nEndereço: "+endereco+"\nTelefone: "+telefone);
}
}
class PessoaJuridica extends Super {
public static void main(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…
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.
… 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
public class Super {
private String nome;
private String endereco;
private String telefone;
//métodos gets
public String getNome(){
return this.nome;
}
public String getEndereco(){
return this.endereco;
}
public String getTelefone(){
return this.telefone;
}
//métodos sets
public void setNome(String nome){
this.nome = nome;
}
public void setEndereco(String endereco){
this.endereco = endereco;
}
public void setTelefone(String telefone){
this.telefone = telefone;
}
}
PessoaFisica.java
public class PessoaFisica {
public static void main(String[] args) {
Super objSuper = new Super();
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
public class PessoaJuridica {
public static void main(String[] args) {
Super objSuper = new Super();
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());
}
}
Dados.java
public class Dados{
public static void main(String [] args){
new PessoaFisica();
new PessoaJuridica();
}
}
Lembrando que todas devem ficar no mesmo pacote ou diretório.
[quote=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
public class Super {
private String nome;
private String endereco;
private String telefone;
//métodos gets
public String getNome(){
return this.nome;
}
public String getEndereco(){
return this.endereco;
}
public String getTelefone(){
return this.telefone;
}
//métodos sets
public void setNome(String nome){
this.nome = nome;
}
public void setEndereco(String endereco){
this.endereco = endereco;
}
public void setTelefone(String telefone){
this.telefone = telefone;
}
}
PessoaFisica.java
public class PessoaFisica {
public static void main(String[] args) {
Super objSuper = new Super();
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
public class PessoaJuridica {
public static void main(String[] args) {
Super objSuper = new Super();
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());
}
}
Dados.java
public class Dados{
public static void main(String [] args){
new PessoaFisica();
new PessoaJuridica();
}
}
Lembrando que todas devem ficar no mesmo pacote ou diretório.[/quote]
Obrigado pela ajuda, mas no caso eu não quero usar métodos, apenas herança.
[quote=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…[/quote]
Realmente, adicionei PessoaJuridica.main(null); ao final da classe PessoaFisica e funcionou, obrigado a todos pela atenção, abraços.