thp-lang.org/md/learn/classes/definition.md
2023-11-04 07:17:32 -05:00

1.2 KiB

Classes

Basically kotlin syntax.

Create a new instance of a class

new not required, in fact, forbidden.

val dog = Dog()

Simple class

Why'd you do this tho?

class SimpleClass

val instance = SimpleClass()

Properties & methods

class SimpleClass
{
    // Properties are private by default
    var String? name = ...

    // Made public with `pub`
    pub var String? surname = ...

    // Methods are private by default
    fun display_name()
    {
        // `$` is used instead of $this
        print($name)
    }

    pub fun get_name() -> String?
    {
        $name
    }
}

Static members

no

Constructor

Kotlin style

class Cat(val String name)
{
    pub fun get_name() -> String
    {
        $name
    }
}

val michifu = Cat("Michifu")
print(michifu.get_name())

With kotlin's init block.

class Dog(val String name)
{
    val Int name_length

    init
    {
        print("Dog has been instantiated")
        $name_length = name.length()
    }
}

Inheritance

Kotlin style

class Animal(val String name)
{
    pub fun say_name()
    {
        print($name)
    }
}

class Cat(String name, Int lives) -> Animal(name)

Cat("Michi", 9).say_name()