Классы и объекты
Определяйте классы со свойствами и методами, используйте конструкторы, изучайте наследование и интерфейсы, а также пишите объектно-ориентированный код в идиоматичном стиле Kotlin.
«Классы и объекты» — бесплатный урок Android Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Что такое класс?
Класс — это шаблон для создания объектов. Он объединяет связанные данные (свойства) и поведение (функции).
class Dog— определяет шаблонval myDog = Dog()— создаёт экземпляр (объект)
Пример: класс User, содержащий имя, возраст и адрес электронной почты.
Определение класса
В классах Kotlin используется лаконичный синтаксис основного конструктора:
class User(val name: String, var age: Int) {
fun greet(): String {
return "Hi, I'm $name and I'm $age years old."
}
}
fun main() {
val user = User("Alice", 28)
println(user.name) // Alice
println(user.age) // 28
user.age = 29 // var can be changed
println(user.greet())
}Классы данных
Класс данных отлично подходит для хранения данных. Добавьте ключевое слово data, и Kotlin автоматически создаст:
equals()/hashCode()— сравнение по значениюtoString()— понятный вывод для пользователяcopy()— создание изменённой копии
Пример класса данных
Классы данных особенно удобны для представления объектов модели:
data class Product(val id: Int, val name: String, val price: Double)
fun main() {
val p1 = Product(1, "Laptop", 999.99)
val p2 = p1.copy(price = 899.99) // new copy with changed price
println(p1) // Product(id=1, name=Laptop, price=999.99)
println(p2) // Product(id=1, name=Laptop, price=899.99)
println(p1 == p2) // false (different price)
}Сопутствующие объекты
Сопутствующий объект содержит элементы, принадлежащие самому классу, а не отдельному экземпляру, — это похоже на static в Java.
Обращайтесь к ним через имя класса: User.create()
Пример сопутствующего объекта
Используйте сопутствующие объекты для фабричных методов и констант:
class Counter {
var count = 0
fun increment() { count++ }
companion object {
const val MAX = 100
fun create(): Counter = Counter()
}
}
fun main() {
val c = Counter.create()
c.increment()
c.increment()
println(c.count) // 2
println(Counter.MAX) // 100
}Наследование
Классы Kotlin по умолчанию являются final (их нельзя расширять). Пометьте класс как open, чтобы разрешить наследование.
open class Animal— можно расширятьclass Dog : Animal()— наследуется от Animaloverride fun sound()— переопределяет функцию родительского класса
Пример наследования
Создайте простую иерархию классов:
open class Shape {
open fun area(): Double = 0.0
}
class Circle(val radius: Double) : Shape() {
override fun area(): Double = 3.14159 * radius * radius
}
class Rectangle(val w: Double, val h: Double) : Shape() {
override fun area(): Double = w * h
}
fun main() {
val shapes: List<Shape> = listOf(
Circle(5.0),
Rectangle(4.0, 3.0)
)
for (s in shapes) println("Area: ${s.area()}")
}Объявления object
Объявление object создаёт одиночку — класс ровно с одним экземпляром, который создаётся при первом обращении.
Используйте его для вспомогательных средств, менеджеров и любых объектов, которые должны существовать в единственном экземпляре.
Быстрая проверка
Какую возможность класс Kotlin data class предоставляет автоматически?
Итоги: классы и объекты
Вы изучили основные элементы объектно-ориентированного программирования в Kotlin:
- Классы с основными конструкторами и функциями-членами
data class— автоматически создаваемые equals, toString и copycompanion object— элементы уровня класса (статические элементы)- Классы
openиoverrideдля наследования - Объявления
objectдля одиночек
Теперь Вы готовы создавать настоящие приложения для Android!
Часто задаваемые вопросы
Урок «Классы и объекты» бесплатный?
Да — полный текст урока «Классы и объекты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Классы и объекты»?
Определяйте классы со свойствами и методами, используйте конструкторы, изучайте наследование и интерфейсы, а также пишите объектно-ориентированный код в идиоматичном стиле Kotlin. Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Классы и объекты»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Безопасность работы с null
- Классы и объекты
- Классы данных и запечатанные классы
- Функции-расширения и функции высшего порядка