class Person {
var name: String = ""
var age: Int = 0
}
val person = Person()
person.name = "Alice"
person.age = 25
class Person(val name: String, var age: Int)
val person = Person("Alice", 25)
println(person.name)
class Person(val name: String, var age: Int) {
init {
println("Person created: $name")
require(age >= 0) { "Age must be positive" }
}
}
class Person(val name: String) {
var age: Int = 0
constructor(name: String, age: Int) : this(name) {
this.age = age
}
}
class Person {
var name: String = ""
get() = field.uppercase()
set(value) {
field = value.trim()
}
val isAdult: Boolean
get() = age >= 18
var age: Int = 0
private set
}
class Calculator {
fun add(a: Int, b: Int): Int {
return a + b
}
fun subtract(a: Int, b: Int) = a - b
}
val calc = Calculator()
println(calc.add(5, 3))
class Example {
private val privateVal = 1
protected val protectedVal = 2
internal val internalVal = 3
public val publicVal = 4
}
class Outer {
private val bar = 1
class Nested {
fun foo() = 2
}
}
val nested = Outer.Nested()
class Outer {
private val bar = 1
inner class Inner {
fun foo() = bar
}
}
val inner = Outer().Inner()
class MyClass {
companion object {
const val CONSTANT = "constant"
fun create(): MyClass {
return MyClass()
}
}
}
println(MyClass.CONSTANT)
val instance = MyClass.create()
object DatabaseManager {
fun connect() {
println("Connected to database")
}
}
DatabaseManager.connect()
val obj = object {
val x = 10
val y = 20
}
println(obj.x + obj.y)
val clickListener = object : OnClickListener {
override fun onClick() {
println("Clicked")
}
}
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
enum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
}
val direction = Direction.NORTH
val color = Color.RED
println(color.rgb)
data class User(val name: String, val age: Int)
val user1 = User("Alice", 25)
val user2 = user1.copy(age = 26)
println(user1)
println(user1 == user2)
val (name, age) = user1
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result()
}
fun handleResult(result: Result) {
when (result) {
is Result.Success -> println(result.data)
is Result.Error -> println(result.message)
Result.Loading -> println("Loading...")
}
}