Tô me confundindo muito com isso… Get, Set e Construtores…
É o seguinte, construtores geralmente são usados para criar e atribuir valores às variáveis de instância do objeto, certo?
E os acessadores e modificadores permitem a captura e a configuração de coisas, no caso aqui as variáveis de instância, certo?
Ok, aqui eu crio uma classe Retângulo e o seu construtor com as respectivas variáveis de instância:
package retangulo;
public class Retangulo {
//criando o construtor
Retangulo(){
int point1;
int point2;
}
//métodos Get and Set
int getPoint1(){
return point1;
}
int setPoint1(int newPoint){
point1 = newPoint;
}
public static void main(String[] args) {
Retangulo r = new Retangulo();
r.setPoint1(30);
System.out.println(r.getPoint1());
}
}
E no console:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
point1 cannot be resolved
at retangulo.Retangulo.setPoint1(Retangulo.java:20)
at retangulo.Retangulo.main(Retangulo.java:28)
Acho que eu tô fazendo confusão com tudo! T.T
Alguém pode me explicar por qual motivo não posso usar Get e Set para configurar as variáveis de instância que estão no construtor?
Putz… tô realmente muito confusa sobre o que tá acontecendo aí… Além de que point1 e point2 são indicadas como se nunca tivessem sido inicializadas…
Obrigada! o/
Não, não, no construtor você só inicializa os valores. A criação é feita fora dele:
[code]package retangulo;
public class Retangulo {
int point1;
int point2;
//criando o construtor
Retangulo(){
point1 = 0;
point2 = 0;
}
//métodos Get and Set
int getPoint1(){
return point1;
}
int setPoint1(int newPoint){
point1 = newPoint;
}
public static void main(String[] args) {
Retangulo r = new Retangulo();
r.setPoint1(30);
System.out.println(r.getPoint1());
}
}
[/code]
Troque
public class Retangulo {
//criando o construtor
Retangulo(){
int point1;
int point2;
}
por
public class Retangulo {
int point1;
int point2;
//criando o construtor
Retangulo(){
}
Olha só agora…
package retangulo;
public class Retangulo {
int point1;
int point2;
//criando o construtor
Retangulo(){
int point1 = 0;
int point2 = 0;
}
//métodos Get and Set
int getPoint1(){
return point1;
}
int setPoint1(int newPoint){
point1 = newPoint;
}
public static void main(String[] args) {
Retangulo r = new Retangulo();
r.setPoint1(30);
System.out.println(r.getPoint1());
}
}
E no console…
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
This method must return a result of type int
at retangulo.Retangulo.setPoint1(Retangulo.java:21)
at retangulo.Retangulo.main(Retangulo.java:30)
o seu método setPoint não precisa retornar nada, no caso ele retorna void, pois ele só precisa inicializar a variavel
Eu vou ter que usar Set como void então, né?
Consegui! o/
=DD
Isso!
Então… alguma dica pra eu ler mais sobre métodos de configuração e construtores? =D
Isso. E dentro do construtor você só usa os ints declarados fora. Não precisa escrever a palavra “int”.
Retangulo(){
[color=“red”]int[/color] point1 = 0;
[color=“red”]int[/color] point2 = 0;
}
Se vc escrever não vai dar erro. Mas os points de dentro do construtor não serão os mesmos point declarados fora dele.
E mais uma coisa… por qual motivo eu não posso inicializar as variáveis de instância somente no construtor? T.T
ENTENDI! =DDD
public class Retangulo {
int point1;
int point2;
//criando o construtor
Retangulo(){
point1=0;
point2=0;
}
Mas faz sentindo eu criar as variáveis de instância fora e depois inicializar todas no construtor? =S
Na verdade, se a inicilização é direta, não faz sentido. É melhor usar diretamente mesmo:
[code]public class Retangulo {
int point1 = 0; //isso roda antes de todos os construtores
int point2 = 0;
//criando o construtor
public Retangulo(){
}
[/code]
Nesse caso, quando usar no construtor?
a) Use quando sua variável não for tão simples assim:
[code]public class Forma {
List pontos = new ArrayList();
//criando o construtor
public Forma(){
pontos.add(0);
pontos.add(1);
pontos.add(2);
}[/code]
b) Use quando você quiser obrigar o usuário a digitar certos parâmetros:
[code]public class Retangulo {
//criando o construtor
public Retangulo(int a, int b){
point1=a;
point2=b;
}[/code]
c) Use quando sua classe não tiver um “set” para aquele atributo.
[code]public class Retangulo {
//criando o construtor
public Retangulo(int a, int b){
point1=a;
point2=b;
}
public int getPonto1() {
return point1;
}
public int getPonto2() {
return point2;
}
}[/code]
Ahhh! =D
Entendi agora… com esses casos de usos mais específicos fica mais fácil então! =D