Kotlin Class and Objects
In Kotlin, you can define classes using the class
keyword. Here's an example of a simple class:
class Person(val name: String, var age: Int) { fun speak() { println("My name is $name and I am $age years old.") } }
In this example, we have defined a class called Person
with two properties: name
of type String
, and age
of type Int
. The val
keyword before the name
property indicates that it is immutable (i.e., read-only), whereas the var
keyword before the age
property indicates that it is mutable (i.e., read-write). We have also defined a method called speak
that prints a message to the console using the name
and age
properties.
To create an instance of a class, you can use the new
keyword or simply call the class constructor directly. Here's an example:
val person = Person("Alice", 30) person.speak()
In this example, we create an instance of the Person
class by calling its constructor with the arguments "Alice" and 30. We store the resulting object in a variable called person
. We can then call the speak
method on the person
object to print the message "My name is Alice and I am 30 years old." to the console.
Kotlin also supports object-oriented programming concepts such as inheritance, polymorphism, and encapsulation. You can define subclasses using the :
symbol, and override methods using the override
keyword. Here's an example:
open class Animal(val name: String) { open fun speak() { println("I am an animal.") } } class Cat(name: String) : Animal(name) { override fun speak() { println("Meow!") } } val animal = Animal("Generic Animal") animal.speak() // prints "I am an animal." val cat = Cat("Whiskers") cat.speak() // prints "Meow!"
In this example, we have defined two classes: Animal
and Cat
. The Animal
class has a property name
of type String
, and a method speak
that prints the message "I am an animal." to the console. The Cat
class is a subclass of Animal
that overrides the speak
method to print the message "Meow!" instead.
We then create an instance of the Animal
class called animal
, and an instance of the Cat
class called cat
. We call the speak
method on both objects, and the output is different because the Cat
class overrides the speak
method.
Finally, note that Kotlin supports data classes, which are classes that are designed primarily to hold data, rather than provide behavior. Data classes automatically generate useful methods such as toString
, equals
, and hashCode
based on their properties. Here's an example:
data class Point(val x: Int, val y: Int) val point = Point(1, 2) println(point) // prints "Point(x=1, y=2)"
In this example, we have defined a data class called Point
with two properties: x
and y
of type Int
. We create an instance of the Point
class called point
, and print it to the console using the println
function. The output is automatically generated by the toString
method provided by the data class, which displays the values of the x
and