Declaração de Propriedades
Vamos ver um exemplo simples de propriedades de declaração, é basicamente assim:
val NomeDaVariável:TipoDaVariável = valor
para propriedades imutáveis, e
val NomeDaVariável:TipoDaVariável = valor
para propriedades mutáveis. A parte (= valor) não é obrigatório, contudo, se o valor da variável estiver dentro do bloco init { }.
1 2 3 4 5 6 7 |
class NomeDaClasse(Parametro1, Parametro2, ...){ ... val NomeDaPropriedade:TipoDaPropriedade = [valor inicial] var NomeDaPropriedade:TipoDaPropriedade = [valor inicial] ... } |
Uma coisa sobre mutabilidade: Imutabilidade significa que a variável val assume o valor que foi atribuída e não pode ser modificada posteriormente, enquanto mutável significa que a variável var pode ser modificada livremente.
Variáveis imutáveis trazem vantagens na estabilidade do programa, é preferível sempre que der escolher variáveis imutáveis ao invés das mutáveis.
Inicialização de Classe
Um bloco init { } dentro de um corpo de uma classe pode conter códigos que funcionaram assim que a classe for inicializada.
Como se diz, eu devo inicializar ou instanciar a classe que será utilizada. Isso inclui preparar a instância e configurar suas propriedades.
Você pode ter vários blocos de init { } dentro de uma classe. Nesse caso funciona sequencialmente, conforme os códigos vão aparecendo eles vão sendo executados.
Os blocos init { } são opcionais, e pode haver casos que não há blocos init.
1 2 3 4 5 6 7 |
class NomeDaClasse(Parametro1, Parametro2, ...){ ... Init{ //códigos } } |
Se você configurar as propriedades dentro de um bloco init { }, não será necessário escrever (= [value]) em uma propriedade de declaração.
1 2 3 4 5 6 7 8 9 |
class NomeDaClasse(Parametro1, Parametro2, ...){ val algumaPropriedade:TipoDaPropriedade ... Init{ algumaPropriedade = [algum valor] //mais códigos de inicializações } } |
Se você especificar o valor da propriedade dentro da declaração da propriedade e depois mudar o valor da propriedade dentro do init { }, o valor da declaração da propriedade é executando antes de iniciar o init { }. Depois, o valor dentro da propriedade init { } muda novamente o valor.
1 2 3 4 5 6 7 8 9 |
class NomeDaClasse { val algumaPropriedade:TipoDaPropriedade = [valor inicial] ... Init{ algumaPropriedade = [novo valor] ... } } |
Invoice no Kotlin
Vamos trabalhar com a classe Invoice. Para simplificar, nossa classe Invoice terá as seguintes propriedades: as informações no comprador serão nome e sobrenome, a data, o nome e quantidade do produto, e o preço por item.
Vamos criar a classe Invoice.
1 2 3 4 5 6 7 8 |
class Invoice(val nomeComprador:String, val sobrenomeComprador:String, val date: String, val nomeProduto:String, val quantidade: Int, val precoPorItem:Double) { } |
Veja que para todos os valores utilizei o val, ou seja, as variáveis são imutáveis. Isso é útil porque as informações não poderão ser modificadas, porque descreve as características e o estado do Invoice.
Fonte livro: Learn Kotlin for Android Development: The Next Generation Language for Modern Android Apps Programming
Deixe um comentário