Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Instanciando classe sem referenciar o arquivo

Boa tarde!

Estou no curso Java parte 2: introdução à Orientação a Objetos.

Na aula 2 é mostrado como criar uma classe "Conta" em um arquivo e também é criada uma classe "CriaConta" em outro arquivo onde é instanciada uma conta.

Minha dúvida é: não deveria ter uma referência de um arquivo para o outro? Um arquivo chamar o outro como um require da vida?

Não entendi como o Java permite instanciar uma classe que está em outro arquivo sem fazer nenhuma referência....

4 respostas

Ola Rodrigo, tudo bom?

Da uma lida nessa apostila da Caelum, Capítulo 7 - Pacotes - Organizando suas classes e bibliotecas (o texto é pequeno, fica tranquilo), acho mais fácil te direcionar para um conteúdo pronto e completo, do que explicar aqui

Mesmo assim se não entender, avisa aqui beleza

abç

Então...ainda fiquei com dúvida...

Estou usando o Eclipse e nele crio um projeto chamado Conta por exemplo.

Dentro do projeto crio classes variadas.

Por estarem dentro de um mesmo projeto, uma classe acessa a outra normalmente sem que uma precise importar a outra no código?

Vim do PHP, lá ou eu crio todas as classes em um único arquivo ou utilizo os require para classe importar as informações da outra, por isso estranhei o professor instanciar uma classe em um arquivo com informações de uma classe que está em outro arquivo sem referenciar nada.

No arquivo Conta.java ele colocou o seguinte código:

class Conta {
    double saldo;
    int agencia;
    int numero;
    String titular;
}

No arquivo CriaConta.java ele colocou o seguinte código:

public class CriaConta {

    public static void main(String[] args) {
        Conta primeiraConta = new Conta();
        saldo = 200;
    }
}

Se são arquivos diferentes, não deveria ter que fazer referência no código para ser possível instanciar?

solução!

Vou tentar dar um exemplo , mas seguindo um pouco a apostila, beleza

"Para usar uma classe do mesmo pacote, basta fazer referência a ela simplesmente escrevendo o próprio nome da classe."

package br.com.caelum.contas;

public class Agencia{
    String endereco;
    int numero;
}
package br.com.caelum.contas;

public class Conta {
    double saldo;
    Agencia agencia;
    int numero;
    String titular;
}

Identifico onde o meu arquivo está, olhando o package na primeira linha do arquivo ("a palavra chave package indica qual o pacote/diretório contém esta classe")

Já para usar uma classe que esteja em outro pacote, você precisa identificar o caminho utilizando o import

package br.com.caelum.contas.main;

    import br.com.caelum.contas.Conta; 

    public class TesteDaConta {

        public static void main(String[] args) {
            Conta minhaConta= new Conta();
            minhaConta.saldo= 1.0;
        }

    }

Logo a regra é a seguinte, se as classes estão no mesmo pacote, você pode utilizar sem importar, mas se estiverem em pacotes diferentes, você precisa usar o importe e identificar o caminho

Ainda tem mais alguns pontos sobre pacotes e importes que eu poderia explicar para complementar a resposta, mas eles com certeza serão abordados durante os cursos no momento ideal