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 { }.
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.
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.
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.
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.
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