interação entre classes em arquivos separados... como funciona?

7 respostas
j.silvestre

olá pessoal.

o seguinte tenho a classe SerialParameters , que foi salvo com o nome de arquivo SerialParameters.java
ela não foi instanciada em lugar algum.

public class SerialParameters {

    private String portName;
    private int baudRate;
    private int flowControlIn;
    private int flowControlOut;
    private int databits;
    private int stopbits;
    private int parity;
tenho a classe SerialConnection que foi salvo no arquivo SerialConnection.java
public class SerialConnection  implements SerialPortEventListener,
        CommPortOwnershipListener {
   ......
   .....
    private SerialParameters parameters;
	.....
	
	public SerialConnection(// construtor
não existe problema as classes estão funcionando. minha duvida é que não foi instanciado a classe SerialParameters, mas mesmo assim eu consigo acessar qualquer metodo a apartir da classe SerialConnection. então esta linha abaixo é equivalente a instaciar com um new ?
private SerialParameters parameters;
sds j.silvestre

7 Respostas

nel

Mas é lógico que não!
Você simplesmente está atribuindo uma variavél a sua classe. É simplesmente um null.

Faça ela acessar um método sem instancia-la que com certeza dará um NullPointerException (com exceção de métodos estáticos).
Portanto, nesse caso em particular, antes de usar essa variavél, você precisa instanciar, pois ai sim, terás uma referência a um objeto e o poderá manipular.

Abraços.

j.silvestre

editado:

achei. estava no arquivo serialDemo.java

parameters = new SerialParameters();

então a pergunta agora é a seguinte:

tendo varios arquivos *.java em um mesmo projeto, só é necessario instanciar uma classe uma vez, e depois simplesmente atribuir uma variavél a classe ?

sds

j.silvestre

drsmachado

Essa linha não significa nada.
Se você não instanciar a classe com um new, receberá um nullPointerException.
A não ser que esteja utilizando um framework para injeção de dependências, aí muda tudo…

j.silvestre

editado:

achei. estava no arquivo serialDemo.java

parameters = new SerialParameters();

então a pergunta agora é a seguinte:

tendo varios arquivos *.java em um mesmo projeto, só é necessario instanciar uma classe uma vez, e depois simplesmente atribuir uma variavél a classe e usar onde eu achar necessário?

sds

j.silvestre

drsmachado

Não necessariamente.
Vamos pensar assim, cada classe java é um determinado endereço (rua + nº).
Cada package é uma rua que pode estar inserida em um bairro, cidade, estado, país, planeta, sistema planetário, galáxia, universo, etc…
Para podermos usar os recursos (métodos e atributos) de uma classe que se encontra na mesma rua (mesmo package) devemos apenas referenciá-la pelo nome. Não há necessidade de um import.
Se a classe que desejamos se encontra em qualquer outro escopo, diferente da rua (package) em que a nossa está. precisamos do import, dizendo onde ela se encontra.

A partir daí, em cada classe que se deseja utilizar outra, independente do import ou não, você precisa instanciá-la, com a diretiva “new”.
Se você vai utilizar a classe Casa em 10 outras, cada uma delas deverá importá-la (se necessário) e ter um new Casa();

j.silvestre

captei…

valews…

nel

Olá!

Numa boa, leia a apostila da Caelum, aqui!.
Vejo que tu tem dúvidas sobre orientação a objetos e bem básicas de Java.

Essa apostila é excelente, bom conteúdo didatico e adivinha, gratuita.
É um conselho e como dizem, “se conselho fosse bom não era dado, era vendido”, mas fica a dica.

Abraços.

Editando: Apostila FJ-11 - Java e Orientação a Objetos.

Criado 9 de maio de 2011
Ultima resposta 9 de mai. de 2011
Respostas 7
Participantes 3