Ответ
-
Инкапсуляция – сокрытие внутренней реализации и предоставление доступа через публичные методы.
class User { private var name: String = "" fun setName(name: String) { this.name = name } fun getName(): String = name } -
Наследование – создание новых классов на основе существующих (расширение функциональности).
open class Animal { fun eat() {} } class Dog : Animal() { fun bark() {} } -
Полиморфизм – возможность объектов с одинаковым интерфейсом иметь разную реализацию.
interface Shape { fun draw() } class Circle : Shape { override fun draw() { /*...*/ } } -
Абстракция – выделение ключевых характеристик объекта, игнорируя несущественные детали.
abstract class Vehicle { abstract fun move() }
Ответ 18+ 🔞
А, ну это же классика, ёпта! Сидишь такой на собеседовании, а тебе: «Расскажите про четыре столпа ООП». И ты такой, с умным видом, начинаешь нести эту пиздопроебибну, которую все зазубрили, но реально мало кто в душе понимает, зачем это всё.
Ну ладно, поехали, раз уж спросили.
Инкапсуляция — это, блядь, как будто у тебя есть крутая тачка, но капот на замке. Ты не лезешь к ней с гаечным ключом в двигатель, а просто жмёшь на педаль газа и рулишь. В коде это значит: «Не лезь ко мне в переменные, чувак, используй методы, которые я для тебя приготовил». Вот смотри, чтобы не было как в том анекдоте — «зачем ты в мою private name полез? Я же геттер сделал!».
class User {
private var name: String = "" // Спрятано нахуй, как золото в сейфе
fun setName(name: String) { this.name = name } // Вот дверца, клади сюда
fun getName(): String = name // А вот окошко, получай обратно
}
Наследование — это когда ты такой: «О, у соседа классная тачка! Хочу такую же, но с нитроускорителем и подогревом сидений». Берёшь его базовую модель и допиливаешь под себя. Главное, не наследуйся от чего попало, а то получится Manда с ушами.
open class Animal { fun eat() {} } // Все животные жрут
class Dog : Animal() { fun bark() {} } // А собаки ещё и гавкают, вот счастливчики
Полиморфизм — это, сука, волшебство. Одно и то же действие — разный результат. Сказал «нарисуй фигуру» — один рисует круг, другой квадрат, а третий, глядя на тебя, рисует хуй в пальто. Но интерфейс-то у них один! Система не парится, кто там что, главное — метод draw() есть.
interface Shape { fun draw() }
class Circle : Shape { override fun draw() { /* рисует круг */ } }
class Square : Shape { override fun draw() { /* рисует квадрат */ } }
// А мог бы быть класс DickInACoat : Shape { ... }
Абстракция — это, блядь, самое интересное. Это когда ты смотришь на мир и отсекаешь всё лишнее. Видишь «Тойоту», «БМВ» и трактор «Беларус». И думаешь: «Похуй на колёса и цвет, все они как-то перемещаются». Вот ты и выделил абстракцию Vehicle с методом move(). А детали — это проблемы конкретных классов.
abstract class Vehicle { abstract fun move() } // «Двигаться» — главное. А как — твои проблемы.
class Toyota : Vehicle() { override fun move() { /* жрёт бензина дохуя, но едет */ } }
Вот и вся магия, ёбанарот. Эти четыре штуки — как ноги у стула. Если одну выбросить, весь этот твой объектно-ориентированный цирк накроется медным тазом. Сидишь тогда на трёх ножках и думаешь: «И какого хуя всё разваливается?».
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶