Fórum Java Extendendo uma Classe #483782

26/06/2014

0

Pessoal, sou iniciante em Java e tenho uma dúvida:

Tenho uma pasta no windows como o nome de compras e dentro dela 3 arquivos

Compras
Funcionario.java
Gerente.java
Principal.java

Segue o código de cada uma:

Funcionario.java
public class Funcionario
{
  private String nome;
  private String endereco;
  private int    idade;
  private char   sexo;

  //Metodos Set
  public void setNome (String _nome)
  {
     this.nome = _nome;
  }
  public void setEndereco (String _endereco)
  {
     this.endereco = _endereco;
  }
  public void setIdade (int _idade)
  {
     this.idade = _idade;
  }
  public void setSexo (char _sexo)
  {
     this.sexo = _sexo;
  }

  //Metodos Get
  public String getNome ()
  {
    return this.nome;
  }
  public String getEndereco ()
  {
    return this.endereco;
  }
  public int getIdade ()
  {
    return this.idade;
  }
  public char getSexo ()
  {
    return this.sexo;
  }
}

Gerente.java
import Funcionario;

public class Gerente extends Funcionario
{
  private int     departamento;
  private double  salario;
}

Principal.java
import Gerente;

public class Principal
{
  public static void main (String[] args)
  {
      Gerente gerente = new Gerente();

      gerente.setNome("Carlos Rocha");
      gerente.setIdade(30);

      System.out.println(gerente.getNome());
      System.out.println(gerente.getIdade());
  }
}


Quando compila Funcionario.java tudo vai bem e o arquivo Funcionario.class é gerado
Mas, quando vou compilar Gerente.java que estende Funcionario, então dá erro de simbolo e não gera o Gerente.class

Será que não esta tendo erro na forma de importar a classe Funcionario?
Carlos Rocha

Carlos Rocha

Responder

Posts

27/06/2014

Andre Santos..

coloque o erro aqui, Carlos...
Responder

Gostei + 0

27/06/2014

Rodrigo Pereira

Compila toda a sua pasta..

Javac *.java


E depois posta o erro aqui
Responder

Gostei + 0

27/06/2014

Carlos Rocha

Fiz assim: como estavam todos os .java na mesma pasta, tirei todos os imports e funcionou.

Agora tenho outra situação. Veja:

Mudei a estrutura de diretórios para:
compras  //Diretório
    Principal.java
    classes //Diretório
        Funcionario.java
        Gerente.java

Compilando classe Funcionário
Classe Funcionario
public class Funcionario
{
  private String nome;
  private String endereco;
  private int    idade;
  private char   sexo;

  //Metodos Set
  public void setNome (String _nome)
  {
     this.nome = _nome;
  }
  public void setEndereco (String _endereco)
  {
     this.endereco = _endereco;
  }
  public void setIdade (int _idade)
  {
     this.idade = _idade;
  }
  public void setSexo (char _sexo)
  {
     this.sexo = _sexo;
  }

  //Metodos Get
  public String getNome ()
  {
    return this.nome;
  }
  public String getEndereco ()
  {
    return this.endereco;
  }
  public int getIdade ()
  {
    return this.idade;
  }
  public char getSexo ()
  {
    return this.sexo;
  }
}

Classe Funcionario Compilado Ok.

Compilando classe Gerente
Classe Gerente
public class Gerente extends Funcionario
{
  private int     departamento;
  private double  salario;
}

Classe Gerente compilado Ok

Como .java na mesma pasta não precisa referencia, Funcionario.java e Gerente.java compilaram normal.

Mas, Principal.java deu o erro de compilação abaixo:
Eis o erro:
D:\1 - Verificar\Projetos\Java\compras\compras>javac Principal.java
Principal.java:3: error: cannot access Gerente
import classes.Gerente;
^
bad class file: .\classes\Gerente.class
class file contains wrong class: Gerente
Please remove or make sure it appears in the correct subdirectory of the cla
sspath.

D:\1 - Verificar\Projetos\Java\compras\compras>

Classe Principal
package compras;

import classes.Gerente;

public class Principal
{
  public static void main (String[] args)
  {
      Gerente gerente = new Gerente();

      gerente.setNome("Carlos Rocha");
      gerente.setIdade(30);

      System.out.println(gerente.getNome());
      System.out.println(gerente.getIdade());
  }
}

Como resolver?
Responder

Gostei + 0

27/06/2014

Carlos Rocha

O erro do javac *.java é:

D:\1 - Verificar\Projetos\Java\compras\compras>Javac *.java
Principal.java:3: error: cannot access Gerente
import classes.Gerente;
^
bad class file: .\classes\Gerente.class
class file contains wrong class: Gerente
Please remove or make sure it appears in the correct subdirectory of the cla
sspath.

D:\1 - Verificar\Projetos\Java\compras\compras>Javac *.java
[code]
Responder

Gostei + 0

28/06/2014

Carlos Rocha

Fazendo aqui meus testes descobri:

Usando a mesma estrutura no Eclipse, funciona. Já pelo cmd do DOS não compila.

Acho que o NetBeans/Eclipse deve gerar uma especie de Path em memória, coisa que o cmd não gera automaticamente para encontrar os endereços.

Será que é isso?
Se for, como montar esse Path antes de compilar?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar