Duvida com Atributos de Classe

4 respostas Resolvido
D

Pessoal, estou aprendendo programação em java, mas tem um conceito de POO que não estou conseguindo fixar na cabeça rs.
Eu aprendi em video aulas, ou em apostilas como da Caelum que se eu declaro uma variavel do tipo de uma classe, quando eu instancio o objeto eu tenho que setar o valor da classe de novo.
Vou colocar um exemplo para ficar mais facil de explicar, este exemplo é retirado da apostila da Caelum:

Seus atributos também podem ser referências para outras classes. Suponha a seguinte classe Cliente:

class Cliente {

String nome;

String sobrenome;

String cpf;

}

12345

class Conta {

int numero;

double saldo;

double limite;

Cliente titular;

// …

}

1234567

E dentro do main da classe de teste:
class Teste {

public static void main(String[] args) {

Conta minhaConta = new Conta();

Cliente c = new Cliente();

minhaConta.titular = c;

// …

}

}

Na classe main teve que instanciar a classe cliente para a variável da classe conta poder receber o seu valor. porém estudando video aulas vi exemplos em que se declara uma variável do tipo de uma classe e já chamava seus métodos sem tem que instanciar um objeto da classe do tipo da variável, ex:

Connection con = ConexaoBD.Conectar();
    PreparedStatement st = null;
   ResultSet rs = null
st = con.prepareStatement("INSERT INTO cadastro_medico (nome, crm, especialidade) VALUES (?,?,?)");
            st.setString(1,M.getNome());
            st.setInt(2, M.getCrm());
            st.setString(3, M.getEspecialidade());
            
            st.executeUpdate();

No caso deste exemplo as variaveis con, rs e st foram declaradas do tipo Connection, Prepared Statment e ResultSet mas sem ter q instanciar um objeto delas para atribuir ao outro objeto.

4 Respostas

L

Acontece que no método prepareStatement é retornado uma instância de PreparedStatement, a diferança é que não foi dado new visivelmente para você, mas dentro do método ele existe, da mesma forma com outros objetos… ou seja, a instância (criação do objeto) está encapsulada

D

Você pode me dar um exemplo de código neste caso especifico para eu saber como encapsular sem dar o new visivelmente ao usuário?

staroski
Solucao aceita
class Teste {

    public static void main(String[] args) {
        Conta minhaConta = criarConta();
    }

    private static Conta criarConta() {
        Conta novaConta = new Conta();
        return novaConta;
    }
}
D

muito obrigado

Criado 12 de janeiro de 2017
Ultima resposta 12 de jan. de 2017
Respostas 4
Participantes 3