Definindo Classes
Parte da seção Programação Orientada a Objetos do Journey de Kotlin da Coddy. Lição 2 de 57.
Uma classe descreve um tipo de objeto: os dados que ele contém e o que pode fazer. class Dog { ... } declara o tipo, e Dog() cria um objeto desse tipo, uma instância. Kotlin não tem a palavra-chave new:
class Dog {
var name = "Rex"
var age = 3
}Dentro de main:
val dog = Dog()
println(dog.name)
println(dog.age)Saída:
Rex
3As variáveis dentro de uma classe são suas propriedades. Cada instância tem sua própria cópia, que pode ser lida e alterada com um ponto:
class Dog {
var name = "Rex"
}Dentro de main:
val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)Saída:
Rex
BellaUma função dentro de uma classe é um método (o Kotlin os chama de funções-membro). Um método pode ler e alterar as propriedades da instância na qual é chamado:
class Counter {
var count = 0
fun increment() {
count++
}
fun report() = "count is $count"
}Dentro de main:
val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())Saída:
count is 2Os nomes de classes usam UpperCamelCase (BankAccount); as propriedades e os métodos usam lowerCamelCase (balance, deposit()). Agrupar os dados com as funções que operam sobre eles é a ideia central da programação orientada a objetos: o código que usa um Counter chama increment() e nunca precisa saber como a contagem é armazenada.
class BankAccount {
var balance = 0
fun deposit(amount: Int) {
balance += amount
}
}Desafio
FácilComplete o método describe() da classe Pet. Ele retorna uma frase construída a partir das propriedades: um animal de estimação chamado Rex, da espécie dog, com idade 3, resulta em Rex is a 3 year old dog.
O código fornecido cria um Pet, define suas propriedades a partir da entrada (nome, espécie, idade) e imprime o resultado de describe().
Seu código deve estar em Pet.kt. Main.kt contém o código fornecido de entrada/saída e não pode ser editado.
Experimente você mesmo
fun main() {
// Código de entrada/saída fornecido: mantenha-o como está
val input = generateSequence(::readLine).toList()
val pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = input[2].toInt()
println(pet.describe())
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Classes e Objetos
Trabalhando com ArquivosDefinindo ClassesConstrutores PrimáriosBlocos init e ValidaçãoConstrutores SecundáriosRecapitulação - Cartão da Biblioteca4Herança
Classes Abertas e SubclassesSobrescrevendo Membrossuper e ConstrutoresClasses AbstratasRevisão - Diretório de Funcionários2Propriedades e Encapsulamento
Acessores PersonalizadosModificadores de VisibilidadeSetters Privadoslazy e lateinitRevisão - Conta Bancária5Interfaces
Declarando InterfacesMétodos PadrãoMúltiplas InterfacesInterfaces como TiposRecapitulação - Métodos de Pagamento8Genéricos
Funções genéricasClasses genéricasRestrições de tipoVariância com in e outRecapitulação - Fila de prioridade11Projeto: Gerenciamento de Biblioteca
Livros e MembrosEmpréstimo de LivrosPratique por conta própria: Playground de Kotlin