Menu
Coddy logo textTech

Определение классов

Часть раздела Объектно-ориентированное программирование путешествия по Kotlin на Coddy. Урок 2 из 57.

Класс описывает разновидность объекта: данные, которые он хранит, и то, что он умеет делать. class Dog { ... } объявляет тип, а Dog() создаёт объект этого типа — экземпляр. В Kotlin нет ключевого слова new:

class Dog {
    var name = "Rex"
    var age = 3
}

Внутри main:

val dog = Dog()
println(dog.name)
println(dog.age)

Вывод:

Rex
3

Переменные внутри класса — это его свойства. У каждого экземпляра есть собственная копия, к которой обращаются и которую изменяют через точку:

class Dog {
    var name = "Rex"
}

Внутри main:

val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)

Вывод:

Rex
Bella

Функция внутри класса — это метод (в Kotlin они называются функциями-членами). Метод может читать и изменять свойства экземпляра, для которого он вызывается:

class Counter {
    var count = 0

    fun increment() {
        count++
    }

    fun report() = "count is $count"
}

Внутри main:

val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())

Вывод:

count is 2

Имена классов используют стиль UpperCamelCase (BankAccount); свойства и методы используют стиль lowerCamelCase (balance, deposit()). Группировка данных с функциями, которые с ними работают, — основная идея объектно-ориентированного программирования: код, использующий Counter, вызывает increment() и никогда не должен знать, как хранится счётчик.

class BankAccount {
    var balance = 0

    fun deposit(amount: Int) {
        balance += amount
    }
}
challenge icon

Задание

Легко

Завершите метод describe() класса Pet. Он возвращает одно предложение, составленное из свойств: домашнее животное по имени Rex, вида dog и возраста 3 даёт Rex is a 3 year old dog.

Предоставленный код создаёт объект Pet, задаёт его свойства из входных данных (имя, вид, возраст) и выводит результат describe().

Ваш код должен находиться в файле Pet.kt. В файле Main.kt находится предоставленный код ввода/вывода, и его нельзя редактировать.

Попробуйте сами

fun main() {
    // Предоставленный код ввода/вывода: оставьте его как есть
    val input = generateSequence(::readLine).toList()
    val pet = Pet()
    pet.name = input[0]
    pet.species = input[1]
    pet.age = input[2].toInt()
    println(pet.describe())
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Песочница Kotlin