Bem pelo que eu venho estudando blocos iniciadores são tipos métodos
construtores a diferença é que métodos construtores faz parte do objeto é blocos construtor faz parte da classe, mais estou com uma grande dúvida.
Tudo bem que construtor da classe é utilizado para dar valores a atributos de uma classe quando seu objeto é instanciado mais com blocos construtores
como isso funciona? Ele inicia os atributos da classe implícitamente assim que
eu o declaro…? vou colocar um código que eu fiz pra ficar mais fácil o entedimento da minha dúvida:
package com.br.funcionario;
public class Circle {
// campos da classe
public static final double PI=3.14159;
public static double campo;
public static double campo1;
public static double campo2;
public static double campo3;
//campos de instancia
public String id;
static
{
campo=21;
campo1=22;
campo2=23;
campo3=24;
}
public Circle()
{
this("Anterior");
}
public Circle(String id)
{
this.id=id;
}
//um método da classe
public static double radiansToDegrees(double rads)
{
return rads*180/PI;
}
//um campo de instância
public double r; //0 raio
//campos de instância que operam sobre campos os campos de instância de um objeto
public double area()
{
return PI*r*r;
}
public static double area(double r)
{
return PI*r*r;
}
public double circuference()
{
return 2*PI*r;
}
//Compara o círculo "this" implícito com o círculo that passado
public Circle verificaCirculo(Circle outro)
{
if(this.r>outro.r)
{
return this;
}
else
return outro;
}
public String toString()
{
return this.id;
}
}
class Testess
{
public static void main(String args[]){
Circle x = new Circle();
System.out.print(x.campo);
}
}
static
{
campo=21;
campo1=22;
campo2=23;
campo3=24;
}
neste casso ele inicializa as váriaveis da classe com esses valores.
Mas se por ventura se eu quizer passar passar o valor de uma outra forma tem como…? se eu estiver errado em alguma parte por favor me corrijam.