Definire le classi
Fa parte della sezione Programmazione orientata agli oggetti del percorso Kotlin di Coddy. Lezione 2 di 57.
Una classe descrive un tipo di oggetto: i dati che contiene e ciò che può fare. class Dog { ... } dichiara il tipo e Dog() crea un oggetto di quel tipo, un’istanza. Kotlin non ha la parola chiave new:
class Dog {
var name = "Rex"
var age = 3
}Dentro main:
val dog = Dog()
println(dog.name)
println(dog.age)Output:
Rex
3Le variabili all'interno di una classe sono le sue proprietà. Ogni istanza ha la propria copia, che può essere letta e modificata con un punto:
class Dog {
var name = "Rex"
}All'interno di main:
val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)Output:
Rex
BellaUna funzione all'interno di una classe è un metodo (Kotlin li chiama funzioni membro). Un metodo può leggere e modificare le proprietà dell'istanza su cui viene chiamato:
class Counter {
var count = 0
fun increment() {
count++
}
fun report() = "count is $count"
}All'interno di main:
val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())Output:
count is 2I nomi delle classi usano UpperCamelCase (BankAccount); le proprietà e i metodi usano lowerCamelCase (balance, deposit()). Raggruppare i dati con le funzioni che operano su di essi è l’idea fondamentale della programmazione orientata agli oggetti: il codice che usa un Counter chiama increment() e non deve mai sapere come viene memorizzato il conteggio.
class BankAccount {
var balance = 0
fun deposit(amount: Int) {
balance += amount
}
}Sfida
FacileCompleta il metodo describe() della classe Pet. Restituisce una frase composta usando le proprietà: un animale domestico di nome Rex, di specie dog e di 3 anni restituisce Rex is a 3 year old dog.
Il codice fornito crea un Pet, imposta le sue proprietà dall'input (nome, specie, età) e stampa il risultato di describe().
Il tuo codice va in Pet.kt. Main.kt contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
fun main() {
// Codice di input/output fornito: lascialo così com'è
val input = generateSequence(::readLine).toList()
val pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = input[2].toInt()
println(pet.describe())
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiCostruttori primariBlocchi init e convalidaCostruttori secondariRiepilogo - Tessera della biblioteca4Ereditarietà
Classi aperte e sottoclassiRidefinizione dei membrisuper e costruttoriClassi astratteRiepilogo - Elenco del personale2Proprietà e incapsulamento
Accessor personalizzatiModificatori di visibilitàSetter privatilazy e lateinitRipasso - Conto bancario5Interfacce
Dichiarare le interfacceMetodi predefinitiInterfacce multipleLe interfacce come tipiRiepilogo - Metodi di pagamento8Tipi generici
Funzioni genericheClassi genericheVincoli sui tipiVarianza con in e outRiepilogo - Coda con priorità11Progetto: Gestione della biblioteca
Libri e sociPrendere in prestito i libriEsercitati da solo: Playground Kotlin