kotlin Kotlin类和对象

Kotlin类和对象

object_expression.kt
fun main(args: Array<String>) {
    val obExp = object {
        val max = 4500
        val min = 2300
        fun doSomething() {
            println("max is $max")
            println("min is $min")
        }
    }
    obExp.doSomething()
}

kotlin Kotlin类和对象

Kotlin类和对象

object_decleration.kt
fun main(args: Array<String>) {
    UseFactory.post("Howdy")
    UseFactory.post("Howdy Partner")
    UseFactory.post("How are you")
}
class Factory private constructor(var message:String){
    init {
        println("Factory Inited! $message")
    }
    companion object {
        fun create(message: String): Factory = Factory(message)
    }
    fun post(another: String) {
        println(another)
    }
}
object UseFactory {
    val factory = Factory.create("Hello Kotlin")
    fun post(another: String) = factory.post(another)
}

kotlin Kotlin类和对象

Kotlin类和对象

companion.kt
fun main(args: Array<String>) {
    val instance = Single.create("Howdy")
    instance.next()
    instance.next().nextNext()
}

class Single private constructor(val message: String) {
    init {
        println("Constructor run $message")
    }
    companion object {
        fun create(message: String): Single = Single(message)
    }
    fun next(): Single {
        println(message)
        println("NEXT")
        return this
    }
    fun nextNext() {
        println("NEXT NEXT")
    }
}

kotlin Kotlin类和对象

Kotlin类和对象

package_file.kt
val API_END = "http://something.com/api/v1/testcall"

fun callApi() {
    println("API EndPoint : $API_END")
}

fun main(args: Array<String>) {
    callApi()
    println(API_END)
}

kotlin Kotlin类和对象

Kotlin类和对象

singleton_2.kt
fun main(args: Array<String>) {
    println(Single.name)
}

object Single {
    val name: String = "Hello Kotlin"
    var nameChange: String = "Hello from Myanmar Links"
    init {
        println("Hello from init")
    }
    val testVar = "Hello Again"
    init {
        println(testVar)
    }
}

kotlin Kotlin类和对象

Kotlin类和对象

singleton.kt
fun main(args: Array<String>) {
    println(Single.name)
    println(Single.nameChange)
    Single.nameChange = "How are you?"
    println(Single.nameChange)
}

object Single {
    val name: String = "Hello Kotlin"
    var nameChange: String = "Hello from Myanmar Links"
}

kotlin Kotlin类和对象

Kotlin类和对象

override.kt
fun main(args: Array<String>) {
    val second = Second("Myanmar", "Links")
    second.testCall()
}

open class First(val firstVar: String) {
    open fun testCall() {
        println("Test Call from First")
    }
}

class Second(firstVar: String, secondVar: String): First(firstVar) {
    override fun testCall() {
        super.testCall()
        println("Second Test Call")
    }
}

kotlin 构造函数和类

constructor.kt
class Student(var name: String = "Yogen", var age: Int)   // Declare Variables to be used in the Constructor here
{
    init                                    
    {
        println("Student: $name");              // Write Constructor Code in this Block
        println("Age: $age");
    }
    
    // To give user another way of declaring object, use secondary constructor
    
    constructor (student_number: Int): this(name: "Yogen")
        {
            // Write init statements here
        }
    
    var some = 7;                               // Write Class contents here
    fun disp()
        {
            print(some);
        }
}

fun main()
{
    val object1 = Student("abc", 14);           //Object Declaration
    val object2 = Student(60);                  // Calls other Constructor
    object1.disp();                             // Fn Call through Object
}

kotlin 范围

也可以在**运算符**之前使用**!**用作:**不在**

range.kt
var myRange = 1..10
    println(myRange)                       // O/P : 1..10

var myRange = 1.rangeTo(10)                 // For Straight Countdown 
var myRange = 10.downTo(1)                 // For Reverse Countdown 

// To check if number exists in range

if (5 in 1..10) print ("abc")
    
    
for (x in 1..10)                // Using Range for Printing entire Range
    print(x)                    // Prints numbers 1 to 10


var evenrange = 0..10 step 2   // To jump 2 numbers first and last included

var alphabet = 'A'..'Z'

kotlin 声明不同数据类型的变量和值

0x,f,0b是强制性的<br/> <br/>字节数据类型值范围从-128到+127

var.kt
// BASIC DATA TYPES

val num = 10    // Cannot be reassigned
var num = 10    // Can be reassigned
val num: Int = 10
val nad: String = "abc"
val asd: Float = 10.0f
var abc: Double = 10.0
var name: Boolean = true
var nam: Char = 'a'
val hexnum = 0xAA_BB_CC
val bytes = 0b1101_1110