Bỏ qua để đến nội dung

📦 Packages & Imports

🎯 Mục tiêu: Hiểu cách tổ chức code với Package và sử dụng Import để tái sử dụng code.


Mỗi file Kotlin thường bắt đầu bằng khai báo package. Nó giúp gom nhóm các class, function liên quan lại với nhau.

package org.example
fun printMessage() { /*...*/ }
class Message { /*...*/ }
  • Tên đầy đủ (Fully Qualified Name - FQN) của hàm trên là org.example.printMessage.
  • Nếu không khai báo package, file sẽ thuộc về default package (không có tên).

Để sử dụng code từ package khác, bạn cần import chúng.

import org.example.Message // Import một class cụ thể
import org.example.* // Import tất cả (scope)

Rất hữu ích khi có xung đột tên (VD: View của Android và View của custom library).

import org.example.Message
import org.test.Message as TestMessage // Đổi tên để tránh trùng
fun main() {
val msg1 = Message()
val msg2 = TestMessage()
}

Kotlin cho phép import nhiều hơn là chỉ Class:

  • Top-level functions & properties
  • Object declarations
  • Enum constants
import kotlin.math.PI
import kotlin.math.cos
fun main() {
println(cos(PI))
}

Kotlin tự động import một số package cơ bản vào mọi file, bạn không cần import thủ công:

  • kotlin.* (Any, Int, String…)
  • kotlin.annotation.*
  • kotlin.collections.* (List, Map…)
  • kotlin.io.* (print, println…)
  • kotlin.ranges.*
  • kotlin.text.*
  • java.lang.* (trên JVM)

Bài tập 1: Tổ chức package

Tạo cấu trúc package:

  • com.bumbii.utils chứa hàm log(msg: String)
  • com.bumbii.app chứa hàm main dùng hàm log
utils.kt
package com.bumbii.utils
fun log(msg: String) = println("[Log]: $msg")
// File: main.kt
package com.bumbii.app
import com.bumbii.utils.log
fun main() {
log("Hello World")
}

  • Khai báo package ở đầu file
  • Import class từ package khác
  • Sử dụng as để giải quyết xung đột tên
  • Biết các default imports của Kotlin