คอนสตรักเตอร์และ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ประกาศฟังก์ชัน
- คลาสและคุณสมบัติ
- คอนสตรักเตอร์และ init
- คลาสข้อมูล