[size=18]Bom galera, sou novo no tópico e em Java tambem. Estou com um pequeno problema, não consigo usar o operador new não consigo entender, porque sempre da erro de compilação, veja[/size]:
[code]public class Teste {
public static void main(String args[]) {
Conta minhaConta;
minhaConta = new Conta();
minhaConta.dono = "Duke";
minhaConta.saldo = 1000.0;
minhaConta.saque = 500;
System.out.println("Saldo atual: " + (minhaConta.saldo-minhaConta.saque));
}
}[/code]
Procurei em alguns tópicos e não ficou claro e na apostila não esplica direito, até comprei um livro mas la estava mais confuso ainda, quando explica no livro ele faz um programa com umas 200 linhas e não consigo entender e nem analisar… queria entender melhor esses operadores…
Se alguem puder ajudar de alguma forma agradeço.
Teste.java:5: error: cannot find symbol Conta minhaConta;
symbol: class Conta
location: class Teste
Teste.java:7: error: cannot find symbol
minhaConta = new Conta();
symbol: class Conta
location: class Teste
2errors
Onde está sublinhado é a setinha que indica o erro…
Tenho que criar outra classe e compilar os dois juntos? se for isso o que eu coloco na outra classe?
O problema esta no tipo dos atributos da sua classe Conta.
Voce esta passando um valor que não é aceito para o tipo “int” nesta linha:
minhaConta.saldo = 1000.0;
Quando se trabalha com Dinheiro, o ideia seria voce utilizar o tipo Double e outra coisa para deixar o seu método mais elegante utilize os getter´s e setter´s.
Tá, não entendi nada…
Você usa new para criar um objeto de uma classe qualquer.
Você pode fazer tudo na mesma classe.
Ex:
//Aqui é declarda a classe conta.
public class Conta {
// E disse que conta tem dois atributos: dono e saldo.
// O atributo dono é do tipo String, ou seja, armazena texto.
public String dono;
// O atributo saldo é to tipo double, número de ponto flutuante um número com virgula.
public double saldo;
//Esse é o metodo onde a JVM irá executar.
public static void main(String[] args) {
//Aqui foi declarada uma variavel do tipo Conta, com o nome de minhaConta.
Conta minhaConta;
//Aqui você instancia a variavel, atribui a ela um objeto do tipo Conta.
minhaConta = new Conta();
//Altera o nome do dono para "Duke"
minhaConta.dono = "Duke";
//Altera o saldo para 1000.0
minhaConta.saldo = 1000.0;
System.out.println("Dono: "+minhaConta.dono+" Saldo: "+minhaConta.saldo);
}
}
Ou em dois arquivo separados:
Arquivo Conta.java
public class Conta {
// E disse que conta tem dois atributos: dono e saldo.
// O atributo dono é do tipo String, ou seja, armazena texto.
public String dono;
// O atributo saldo é to tipo double, número de ponto flutuante um número com virgula.
public double saldo;
}
Arquivo Main.java
public class Main {
//Esse é o metodo onde a JVM irá executar.
public static void main(String[] args) {
//Aqui foi declarada uma variavel do tipo Conta, com o nome de minhaConta.
Conta minhaConta;
//Aqui você instancia a variavel, atribui a ela um objeto do tipo Conta.
minhaConta = new Conta();
//Altera o nome do dono para "Duke"
minhaConta.dono = "Duke";
//Altera o saldo para 1000.0
minhaConta.saldo = 1000.0;
System.out.println("Dono: "+minhaConta.dono+" Saldo: "+minhaConta.saldo);
}
}
Se você estiver usando a linha de comando para compilar e executar, se esses arquivos estiverem no mesmo diretorio não haverá problemas.
Não, na verdade nesse caso e desaconselhável a por public antes, pois fere o conceito de encapsulamento.
Mas vamos do começo o que public quer dizer?
public é um modificar de acesso, ele diz que aquele variável estará visível para todos, melhor publica a todos.
E foi o que nos fizemos não, Conta.dono = ‘‘nome’’, alteramos diretamente o valor da variável dono através da nossa variável conta.
Mas qualquer parte do código deveria ter acesso direto a isso, não. Por exemplo: A classe que cria uma interface gráfica não precisa ‘saber’ como alterar diretamente os atributos da nossa classe conta, não!
Da mesma maneira que você não tem ideia de funcionamento preciso do funcionamento de um controle de tv, ou tem, não sei, mas sabe que apertando um botão determinada ação é executada.
Você tem acesso a um método, que realiza a operação por debaixo do pano, da mesma forma que no controle você tem um botão.
Não sei se ficou claro… Mas continue com sua apostila que uma hora você ira ver isso.
Public foi apenas para tornar o exemplo mais didático, e o seu problema não era com o public, pois se você retirar o public as classes ainda funcionarão, neste caso.
Eu notei que você esta tendo uma pequena dificuldade com o conceito de orientação a objetos, o que é completamente normal em quem está começando. Então minha sugestão é que estude esses conceitos, normalmente as apostilas vão introduzindo os conceitos pouco a pouco, pois um conceito depende de outro, por isso você talvez ainda não tenha chegado à parte do encapsulamento.
ps: Pelo que eu li, o seu erro foi não ter criado a classe conta, ou criado ela de forma incorreta, ou colocado a classe em outro arquivo ou mais um punhado de opções.