0Pricing
Android Academy · บทเรียน

คอนสตรักเตอร์และ init

สร้างและเริ่มต้นออบเจ็กต์

คอนสตรักเตอร์และ init เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน

ตัวสร้างคืออะไร

ตัวสร้างคือโค้ดพิเศษที่ทำงานเมื่อคุณสร้างออบเจ็กต์ โดยจะกำหนดค่าเริ่มต้นของออบเจ็กต์

ใน Kotlin ตัวสร้างหลักจะเขียนอยู่ถัดจากชื่อคลาส

ตัวสร้างหลัก

ตัวสร้างหลักจะอยู่ในวงเล็บหลังชื่อคลาส คุณส่งค่าเข้าไปเมื่อสร้างออบเจ็กต์

ในตัวอย่างนี้ Dog ต้องได้รับชื่อเมื่อถูกสร้าง

class Dog(name: String) {
    val dogName = name
}

fun main() {
    val d = Dog("Rex")
    println(d.dogName)
}

พร็อพเพอร์ตีในตัวสร้าง

การเพิ่ม val หรือ var ไว้หน้าพารามิเตอร์ของตัวสร้าง จะเปลี่ยนพารามิเตอร์นั้นเป็นพร็อพเพอร์ตีโดยอัตโนมัติ

นี่เป็นรูปแบบ Kotlin ที่ใช้กันทั่วไปและกระชับที่สุด

class Dog(val name: String, var age: Int)

fun main() {
    val d = Dog("Rex", 3)
    println(d.name + " is " + d.age)
}

ค่าเริ่มต้นของตัวสร้าง

พารามิเตอร์ของตัวสร้างสามารถมีค่าเริ่มต้นได้เช่นกัน ดังนั้นผู้เรียกจึงไม่จำเป็นต้องระบุค่าเหล่านั้น

ในตัวอย่างนี้ age จะมีค่าเริ่มต้นเป็น 0 หากไม่ได้ระบุ

class Dog(val name: String, var age: Int = 0)

fun main() {
    val d = Dog("Max")
    println(d.age)
}

บล็อก init

บล็อก init จะทำงานเป็นส่วนหนึ่งของตัวสร้างหลัก ใช้บล็อกนี้สำหรับตรรกะการตั้งค่าที่ไม่เหมาะจะเขียนไว้ในบรรทัดพร็อพเพอร์ตีเพียงบรรทัดเดียว

บล็อกนี้สามารถอ่านพารามิเตอร์ของตัวสร้างได้

class Dog(val name: String) {
    init {
        println("Created dog: " + name)
    }
}

fun main() {
    Dog("Rex")
}

การตรวจสอบใน init

การใช้งาน init ที่พบได้บ่อยคือการตรวจสอบข้อมูลนำเข้า ในตัวอย่างนี้ เราป้องกันค่าอายุที่ติดลบโดยใช้ require

หากการตรวจสอบไม่ผ่าน ออบเจ็กต์จะไม่ถูกสร้างขึ้น

class Person(val age: Int) {
    init {
        require(age >= 0) { "Age cannot be negative" }
    }
}

fun main() {
    val p = Person(25)
    println(p.age)
}

ลำดับการทำงาน

ตัวเริ่มต้นค่าพร็อพเพอร์ตีและบล็อก init จะทำงานจากบนลงล่างตามลำดับที่ปรากฏในคลาส

เรื่องนี้สำคัญเมื่อบรรทัดหนึ่งต้องอาศัยค่าที่กำหนดไว้ด้านบน

class Demo {
    val a = 1
    init { println("a is " + a) }
    val b = a + 1
    init { println("b is " + b) }
}

fun main() {
    Demo()
}

พร็อพเพอร์ตีที่คำนวณค่า

คุณสามารถคำนวณค่าพร็อพเพอร์ตีจากค่าของตัวสร้างภายในเนื้อหาของคลาสได้

ในตัวอย่างนี้ area คำนวณมาจาก width และ height

class Rect(val width: Int, val height: Int) {
    val area = width * height
}

fun main() {
    println(Rect(3, 4).area)
}

ตัวสร้างรอง

คลาสสามารถมีตัวสร้างรองโดยใช้คำสำคัญ constructor ได้เช่นกัน ตัวสร้างเหล่านี้ต้องส่งต่อการสร้างไปยังตัวสร้างหลักด้วย this(...)

ตัวสร้างรองพบได้น้อยกว่า เพราะโดยทั่วไปค่าเริ่มต้นก็เพียงพอแล้ว

class Dog(val name: String) {
    constructor() : this("Unknown")
}

fun main() {
    println(Dog().name)
}

การใช้ออบเจ็กต์ใหม่

เมื่อตัวสร้างและ init ทำงานเสร็จแล้ว ออบเจ็กต์ก็พร้อมใช้งาน คุณสามารถอ่านพร็อพเพอร์ตีและเรียกใช้เมธอดได้ทันที

ในตัวอย่างนี้ ตัวสร้างจะตั้งค่าเงินคงเหลือ และเมธอดจะใช้จ่ายเงินจากค่านั้น

class Account(var balance: Int) {
    fun spend(amount: Int) {
        balance = balance - amount
    }
}

fun main() {
    val acc = Account(100)
    acc.spend(30)
    println(acc.balance)
}

ตัวสร้างเป็นจุดเริ่มต้น

ตัวสร้างและบล็อก init ช่วยให้มั่นใจว่าออบเจ็กต์ทุกตัวจะเริ่มต้นในสถานะที่ถูกต้อง

  • ตัวสร้างหลัก: ประกาศและรับค่า
  • init: ทำการตั้งค่าและตรวจสอบ

วิธีนี้ช่วยป้องกันไม่ให้ออบเจ็กต์ในแอปของคุณถูกสร้างขึ้นไม่ครบถ้วน

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับตัวสร้างและ init ของคุณ

ทบทวน

คุณได้เรียนรู้เกี่ยวกับตัวสร้างหลัก การประกาศพร็อพเพอร์ตีด้วย val/var ภายในตัวสร้าง และการกำหนดค่าเริ่มต้นให้พร็อพเพอร์ตี

บล็อก initใช้จัดการการตั้งค่าและการตรวจสอบ และทำงานจากบนลงล่างร่วมกับตัวเริ่มต้นค่าพร็อพเพอร์ตี ต่อไปคุณจะได้รู้จักคลาสข้อมูล ซึ่งสร้างโค้ดพื้นฐานเหล่านี้ให้คุณโดยอัตโนมัติ

คำถามที่พบบ่อย

บทเรียน “คอนสตรักเตอร์และ init” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “คอนสตรักเตอร์และ init” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “คอนสตรักเตอร์และ init”

สร้างและเริ่มต้นออบเจ็กต์ คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “คอนสตรักเตอร์และ init” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม

ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ประกาศฟังก์ชัน
  2. คลาสและคุณสมบัติ
  3. คอนสตรักเตอร์และ init
  4. คลาสข้อมูล
← กลับไปที่ Android Academy