Trong bài viết trước mình đã gửi tới các bạn khái niệm Kotlin là gì rồi, phần tiếp theo này mình sẽ trình bày tiếp đặc điểm của Kotlin các bạn hãy theo dõi nhé

Đặc điểm của Kotlin là gì?

Khai báo biến

Có 2 từ khóa khai báo biến trong Kotlin là var và val

val a: Int = 1
val b = 1   // `Int` type is inferred
val c: Int  // Type required when no initializer is provided
c = 1       // definite assignment
var x = 5 // `Int` type is inferred
x += 1
  • Từ khóa var sử dụng khi giá trị của biến thay đổi, val sử dụng khi giá trị của biến không thay đổi
  • Từ khóa val giống như readonly trong C# hoặc final trong Java
  • Biến val phải được khởi tạo lúc khai báo
  • Từ khóa Void trong java hay C# sẽ được thay thế bằng Unit trong Kotlin

Null Safety

Một trong những cạm bẫy phổ biến trong các ngôn ngữ lập trình, bao gồm cả Java là cho phép 1 thành phần nào đó được Null. Nếu không chắc chắn thành phần đó được phép Null hay không sẽ rất dễ xảy ra lỗi không lường trước được, gây nguy hiểm cho hệ thống của bạn. Cụ thể, trong java sẽ gây ra 1 exception là NullPoiterException hoặc viết ngắn gọi là NPE.

Kotlin nhằm mục đích xóa bỏ NullPoiterException trong code của chúng ta. Ngay khi khai báo biến với Kotlin, bạn đã phải chỉ rõ biến đó có được phép Null hay không. Có 2 trường hợp được phép đó là : không thể Null và có thể Null

Khai báo 1 biến cho phép Null

var b: String? = "abc" // có thêm dấu ? sau kiểu của biến
b = null // compilation ok
val l = b.length // not safe
Khai báo 1 biến không được phép Null
var a: String = "abc"
a = null // compilation error
val l = a.length // safe

Chúng ta có thể thấy Kotlin đã khắc phục được expcetion NPE trong Java. Các biến cho phép Null hay không được phép Null đã được xác định ngay trong quá trình khai báo biến, các IDE sẽ giúp chúng ta phát hiện ra lỗi ngay khi compile. Việc phát hiện ra lỗi sớm khi compile sẽ tốt hơn so với khi runtime. Nó giúp hệ thống của chúng ta an toàn hơn.

String template

String trong kotlin có thể chứa các biểu thức template, tức là những kết quả trả về hoặc biến có thể được nối vào trong 1 String. Một biểu thức template bắt đầu với ($) và tên :

val apples = 4
valbananas = 3
println(“I have $apples apples.”)
println(“I have $apples apples and ” + (apples + bananas) + “ fruits.”)

println(“I have $apples apples and ${apples + bananas} “ fruits.”)

Kế thừa và Override

Mặc định class trong Kotlin đều là final (tức là không được phép kế thừa)

open class Base {
    open fun v() {}
    fun nv() {}
}
class Derived() : Base() {
   override fun v() {}
}

Trong class final (tức là không có từ khóa “open”) thì việc khai báo các hàm, thuộc tính open bị cấm Ở 1 lớp con khác, hàm được đánh dấu là override thì chính nó là open (lại được kế thừa từ lớp khác), nếu muốn chống override thì lại sử dụng từ khóa final

open class AnotherDerived() : Base() {
    final override fun v() {}
}

Trong interface, các member mặc định là “open”

interface B {
    fun f() { print("B") } // interface members are 'open' by default
    fun b() { print("b") }
}

Kotlin implement interface :

class C() : A(), B {
     // The compiler requires f() to be overridden:
     override fun f() {
    super<A>.f() // call to A.f()
    super<B>.f() // call to B.f()
     }
}

Chỉ định truy cập (Visibility Modifiers)

4 loại Visivility Modifiers trong Kotlin : private, protected, internal, và public

  • Nếu không chỉ rõ thì mặc định là public
  • Các chỉ định truy cập : private, protected và public giống cách sử dụng trọng java
  • Riêng internal ta có thể sử dụng trong cùng module

Truyền tham số trong hàm

Kotlin cho phép thay đổi vị trí tham số trong hàm

fun main(args : Array<String>) { 
    greet(firstName = "Frasensco", lastName = "Merini") 
    greet(lastName = "John", firstName = "Stamos") 
    greet("Borat", "Ismail") 
    greet("Crystal", lastName = "Stamos") 
    call("Xavier", age = 20, location = "Portugal") 
} 

fun greet(firstName : String, lastName : String){
    println("Good morning $firstName $lastName") 
} 

fun call(name : String, location : String, age : Int){ 
    println("Call $name who lives at $location and he is $age old") 
}

Out put :

Good morning Frasensco Merini
Good morning Stamos John
Good morning Borat Ismail
Good morning Crystal Stamos
Call Xavier who lives at Portugal and he is 20 old

Viết câu trả lời

Drop Images