1. Классы
Задача:
Создай класс Car, который имеет свойства brand (марка) и speed (скорость). Напиши метод printInfo, который выводит информацию о машине. Создай объект класса Car с маркой "Toyota" и скоростью 120, и вызови метод printInfo.
Решение:
class Car(val brand: String, val speed: Int) {
fun printInfo() {
println("Машина марки $brand имеет скорость $speed км/ч.")
}
}
fun main() {
val myCar = Car("Toyota", 120)
myCar.printInfo()
}
2. Объекты
Задача:
Создай объект myHouse из класса House, у которого есть свойства color (цвет) и floors (этажи). Напиши метод describe, который выводит описание дома. Объяви объект с цветом "синий" и 2 этажами и вызови метод describe.
Решение:
class House(val color: String, val floors: Int) {
fun describe() {
println("Это $color дом с $floors этажами.")
}
}
fun main() {
val myHouse = House("синий", 2)
myHouse.describe()
}
3. Наследование
Задача:
Создай класс Animal с методом eat, который выводит "Животное ест". Создай класс Dog, который наследуется от Animal, и добавь метод bark, который выводит "Гав-гав!". Создай объект собаки и вызови оба метода.
Решение:
open class Animal {
fun eat() {
println("Животное ест.")
}
}
class Dog : Animal() {
fun bark() {
println("Гав-гав!")
}
}
fun main() {
val dog = Dog()
dog.eat()
dog.bark()
}
4. Интерфейсы
Задача:
Создай интерфейс Flyable с методом fly. Создай класс Bird, который реализует этот интерфейс, и класс Airplane, который тоже может летать. Реализуй метод fly для каждого класса.
Решение:
interface Flyable {
fun fly()
}
class Bird : Flyable {
override fun fly() {
println("Птица летит низко!")
}
}
class Airplane : Flyable {
override fun fly() {
println("Самолёт летит высоко!")
}
}
fun main() {
val bird = Bird()
bird.fly()
val airplane = Airplane()
airplane.fly()
}
5. Полиморфизм
Задача:
Создай класс Animal с методом makeSound, который выводит "Какой-то звук". Создай классы Dog и Cat, которые наследуются от Animal, и переопредели метод makeSound для каждого. Создай список из объектов Dog и Cat и вызови метод makeSound для каждого объекта.
Решение:
open class Animal {
open fun makeSound() {
println("Какой-то звук")
}
}
class Dog : Animal() {
override fun makeSound() {
println("Гав-гав!")
}
}
class Cat : Animal() {
override fun makeSound() {
println("Мяу!")
}
}
fun main() {
val animals = listOf(Dog(), Cat())
for (animal in animals) {
animal.makeSound()
}
}
6. Инкапсуляция
Задача:
Создай класс Phone, который будет хранить марку телефона и уровень заряда батареи. Убедитесь, что:
- Уровень заряда не может быть меньше 0 и больше 100.
- Вы можете узнать марку телефона и уровень заряда с помощью методов.
Решение:
class Phone(private var brand: String, private var batteryLevel: Int) {
// Геттер для марки
fun getBrand(): String {
return brand
}
// Геттер для уровня заряда
fun getBatteryLevel(): Int {
return batteryLevel
}
// Сеттер для уровня заряда
fun setBatteryLevel(level: Int) {
if (level in 0..100) {
batteryLevel = level
} else {
println("Ошибка: уровень заряда должен быть от 0 до 100.")
}
}
}
fun main() {
val myPhone = Phone("Samsung", 50)
println("Марка телефона: ${myPhone.getBrand()}")
println("Уровень заряда: ${myPhone.getBatteryLevel()}%")
myPhone.setBatteryLevel(80) // Меняем уровень заряда
println("Новый уровень заряда: ${myPhone.getBatteryLevel()}%")
}