Construtores são métodos especiais chamados pelo sistema no momento da criação de um objeto. Eles não possuem valor de retorno, porque você não pode chamar um construtor para um objeto, você só usa o construtor no momento da inicialização do objeto. Construtores representam uma oportunidade de inicializar seus dados de forma organizada. Construtores são obrigatórios em uma classe, mas não é preciso declara-los, caso não declare um construtor por default a declaração é: Classe.new
Static
Declaração de um tipo de Classe, método, propriedade ou variável que pertence exclusivamente a sua própria classe, classes estáticas não podem ser instanciadas. Métodos e variáveis estáticas não precisam ser instanciadas, em Ruby a palavra Static significa da classe e é substituída por self para métodos e @@atributo para atributos.
Exemplo:
Neste cenário queremos saber quantos bebês foram instanciados, para isto criamos um contador no construtor do objeto e a cada objeto criado o contador aumenta nos mostrando no final a quantidade exata de novos objetos de uma classe. Visto que nosso contador pertence a classe e não a cada instancia de cada classe, neste caso para usar o contador não precisamos instanciar a classe graças a declaração self para o método e @@ para o atributo.
Ruby
#!/usr/bin/env ruby # Desenvolvimento Aberto # ClassesReferencia.rb # Define classe bebê class Bebe # Define atributos da classe (estático) @@quantidade = 0 # Define método da classe def self.quantidade return @@quantidade end # Define construtor da classe def initialize() @@quantidade = @@quantidade + 1 end end # Intancias de objetos bebês Daniela = Bebe.new Rodrigo = Bebe.new Tamara = Bebe.new Mateus = Bebe.new # Imprime quantidade de instancias da classe Bebe puts "Parabéns !!!!!" puts "Você teve " + String(Bebe.quantidade) + " bebês"