Definir clases
Parte de la sección Programación orientada a objetos del Journey de Kotlin de Coddy. Lección 2 de 57.
Una clase describe un tipo de objeto: los datos que contiene y lo que puede hacer. class Dog { ... } declara el tipo, y Dog() crea un objeto de ese tipo, una instancia. Kotlin no tiene la palabra clave new:
class Dog {
var name = "Rex"
var age = 3
}Dentro de main:
val dog = Dog()
println(dog.name)
println(dog.age)Salida:
Rex
3Las variables dentro de una clase son sus propiedades. Cada instancia tiene su propia copia, que se lee y modifica con un punto:
class Dog {
var name = "Rex"
}Dentro de main:
val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)Salida:
Rex
BellaUna función dentro de una clase es un método (Kotlin los llama funciones miembro). Un método puede leer y cambiar las propiedades de la instancia sobre la que se llama:
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())Salida:
count is 2Los nombres de las clases usan UpperCamelCase (BankAccount); las propiedades y los métodos usan lowerCamelCase (balance, deposit()). Agrupar los datos con las funciones que operan sobre ellos es la idea central de la programación orientada a objetos: el código que usa un Counter llama a increment() y nunca necesita saber cómo se almacena el recuento.
class BankAccount {
var balance = 0
fun deposit(amount: Int) {
balance += amount
}
}Desafío
FácilCompleta el método describe() de la clase Pet. Devuelve una oración formada a partir de las propiedades: una mascota llamada Rex, de especie dog y edad 3 da como resultado Rex is a 3 year old dog.
El código proporcionado crea una Pet, establece sus propiedades a partir de la entrada (nombre, especie, edad) e imprime el resultado de describe().
Tu código debe estar en Pet.kt. Main.kt contiene el código proporcionado de entrada/salida y no se puede editar.
Pruébalo tú mismo
fun main() {
// Código de entrada/salida suministrado: déjalo 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 lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación orientada a objetos
1Clases y objetos
Trabajar con archivosDefinir clasesConstructores primariosBloques init y validaciónConstructores secundariosRepaso - Tarjeta de biblioteca4Herencia
Clases abiertas y subclasesSobrescritura de miembrossuper y constructoresClases abstractasRepaso: directorio del personal2Propiedades y encapsulación
Accesores personalizadosModificadores de visibilidadSetters privadoslazy y lateinitRepaso: cuenta bancaria5Interfaces
Declaración de interfacesMétodos predeterminadosInterfaces múltiplesInterfaces como tiposRepaso: métodos de pago8Genéricos
Funciones genéricasClases genéricasRestricciones de tiposVariancia con in y outRepaso - Cola de prioridad11Proyecto: Gestión de biblioteca
Libros y miembrosPréstamo de librosPractica por tu cuenta: Playground de Kotlin