Acessar uma classe em outra

Vejamos:

Classe Principal (Main)


//Principal.java
public class Principal {
	
	//inicia programa Java
	public static void main(String args[])
	{		
		Conta minhaConta1 = new Conta(); //cria minhaConta para acessar a classe Conta
		Cadastro adcionar = new Cadastro(); //cria Cadastro para acessar Cadastro

		adcionar.Cadastro();
		minhaConta1.displayMessageCliente();
		
	}
	
}

Classe Cadastro

import java.util.Scanner; //importa a classe Scanner para obter dados a partir da janela de comando
public class Cadastro  {
	
	Scanner input = new Scanner(System.in); //cria Scanner para obter dados a partir da janela de comando
	
	String dadosCliente;
	
	Conta myConta = new Conta();
	
	
	//método para pedir o nome do cliente para cadastro
	void Cadastro()
	{
		System.out.println("Digite o seu nome completo para cadastro: ");
		String nome = input.nextLine();
		myConta.setCliente(nome);
	}


}

Classe Conta

//Orientação a Objetos
//Conta.java
import java.util.Scanner; //importa a classe Scanner
public class Conta {
	
	int numero; //número da conta
	String cliente; //dono da conta
	int saldo; //saldo da conta
	double limite; //limite da conta
	Scanner input = new Scanner(System.in); //importa a classe Scanner
	
	//altera ou inclui novo nome
	void setCliente(String nomeCliente)
	{
		cliente = nomeCliente; //adciona cliente a cliente
	}
	
	//retorna o nome do cliente
	String getNomeCliente()
	{
		return cliente;
	}
	
	//método para exibir mensagem de boas-vindas ao cliente do Banco
	void displayMessageCliente()
	{
		System.out.printf("Olá %s!\n" +
		          "Seja bem vindo(a) ao Banco Itaú!\n",getNomeCliente());
		
	}
	//método para sacar o dinheiro
	void Saca(int quantidade)
	{
		int novoSaldo = this.saldo - quantidade; //retira o saldo
		this.saldo = novoSaldo; //adciona a nova quantia (retirada) a novoSaldo
		
	}
	
	//método para depositar dinheiro na conta
	void Depositar(double quantidade)
	{
		this.saldo += quantidade;
	}
	
	//retorna o novo saldo
	int novoSaldo()
	{
		return this.saldo;
	}

}

Ao exibir o programa, eu coloco o nome para cadastro, porém, retorna null. Por que?

hackum ,

Bom dia !

Você instanciou 2 classes conta ( 1 no main e 1 na classe Cadastro)

Conta minhaConta1 = new Conta(); // main

Conta myConta = new Conta(); // Cadastro

Quanto voce manda chama adcionar.Cadastro no main , e inseri o nome da conta você esta inserindo no myconta que esta dentro da classe Cadastro , mas quando voce chama minhaConta1.displayMessageCliente(); no main ele retorna null porque você não adicionou na classe Conta criada no main.

Conheco 2 soluções para seu problema.
Ou você coloca myConta.displayMessageCliente(); no metodo Cadastro da classe conta.
Ou voce fornece o minhaConta1 para a classe Cadastro (talvez essa seja a sua duvida)

Segue o exemplos abaixo da segunda opção:

Classe Principal (Main):


//Principal.java
public class Principal {
	
	//inicia programa Java
	public static void main(String args[])
	{		
		Conta minhaConta1 = new Conta(); //cria minhaConta para acessar a classe Conta
		Cadastro adcionar = new Cadastro(minhaConta1); // ***ALTERADO AQUI *** cria Cadastro para acessar Cadastro COM minhaConta1

		adcionar.cadastrar(); // metodo cadastrar
		minhaConta1.displayMessageCliente();
		
	}
	
}

Classe Cadastro


import java.util.Scanner; //importa a classe Scanner para obter dados a partir da janela de comando
public class Cadastro  {
	
	Scanner input = new Scanner(System.in); //cria Scanner para obter dados a partir da janela de comando
	
	String dadosCliente;
	
	Conta myConta; // *** ALTERADO AQUI *** essa variavel Conta sera alimentada pela minhaConta1 de main
	
	
	
	public Cadastro(Conta conta) // *** Alterado AQUI *** Metodo construtor
	{
                myConta = conta; // AQUI QUE myConta é alimentada
	}

// ** ADICIONADO Metodo cadastrar

	public void cadastrar() {

		System.out.println("Digite o seu nome completo para cadastro: ");
		String nome = input.nextLine();
		myConta.setCliente(nome);
	
	}

}

Sou iniciante em java , não sei se fui claro na resposta.

Espero ter ajudado.

O que você fez exatamente aí ?
Colocou o Cadastro como atributo ?

Eu instanciei a classe Cadastro (objeto adcionar) em Main fornecendo o objeto minhaConta1 (da classe Conta) criado em Main como referencia.


        Conta minhaConta1 = new Conta(); //cria minhaConta para acessar a classe Conta   
        Cadastro adcionar = new Cadastro(minhaConta1); // ***ALTERADO AQUI *** cria Cadastro para acessar Cadastro COM minhaConta1   

Quando é executada a linha:


       Cadastro adcionar = new Cadastro(minhaConta1); // ***ALTERADO AQUI *** cria Cadastro para acessar Cadastro COM minhaConta1   

Sera executada o metodo construtor da classe Cadastro


    public Cadastro(Conta conta) // *** Alterado AQUI *** Metodo construtor   
    {   
                myConta = conta; // AQUI QUE myConta é alimentada   
    }   

O Metodo Construtor Cadastro recebe como referencia um objeto da classe Conta.

e define o objeto myConta com o objeto conta recebido como referencia.

Depois na proxima linha em main:


        adcionar.cadastrar(); // metodo cadastrar   

É chamado o metodo cadastrar da classe Cadastro:


// ** ADICIONADO Metodo cadastrar   
  
    public void cadastrar() {   
  
        System.out.println("Digite o seu nome completo para cadastro: ");   
        String nome = input.nextLine();   
        myConta.setCliente(nome);   
       
    }   

Apos digitar um nome e enter e executado o metodo setCliente da classe Conta (criada em main da classe Principal e passado uma referencia dela como parametro para classe Cadastro).


    //altera ou inclui novo nome   
    void setCliente(String nomeCliente)   
    {   
        cliente = nomeCliente; //adciona cliente a cliente   
    }   

Depois na proxima linha em main:


       minhaConta1.displayMessageCliente();   
 

É executado o metodo displayMessageCliente() da clasee Conta:


Banco   
    void displayMessageCliente()   
    {   
        System.out.printf("Olá %s!\n" +   
                  "Seja bem vindo(a) ao Banco Itaú!\n",getNomeCliente());   
           
    }   

O qual executa o metodo getNomeCliente da classe Conta:


    String getNomeCliente()   
    {   
        return cliente;   
    }   
       

E então é retornado o nome do cliente.