คอนสตรักเตอร์หลักและพารามิเตอร์พร็อพเพอร์ตี
ประกาศคลาสด้วยคอนสตรักเตอร์หลักและการประกาศพร็อพเพอร์ตีภายในบรรทัดเดียวกัน
คอนสตรักเตอร์หลักและพารามิเตอร์พร็อพเพอร์ตี เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตัวสร้างหลัก
คลาส Kotlin ประกาศตัวสร้างหลักไว้ในวงเล็บถัดจากชื่อคลาสโดยตรง ไม่มีส่วนตัวของเมธอด มีเพียงรายการพารามิเตอร์
คลาสแบบง่ายที่สุด
ตัวสร้างหลักที่ไม่มีตัวปรับเปลี่ยนจะไม่ปรากฏให้เห็นหลังชื่อคลาส
class Greeter(val name: String) {
fun greet() = "Hello, $name!"
}
fun main() {
println(Greeter("Ada").greet())
}พารามิเตอร์คุณสมบัติ
เติม val หรือ var หน้าพารามิเตอร์ของตัวสร้าง เพื่อเปลี่ยนพารามิเตอร์นั้นเป็นคุณสมบัติของคลาสได้ในขั้นตอนเดียว
class Person(val name: String, var age: Int)
fun main() {
val p = Person("Bob", 30)
println("${p.name} is ${p.age}")
p.age = 31
println("Now ${p.age}")
}พารามิเตอร์ที่ไม่มี val/var
พารามิเตอร์ของตัวสร้างที่ไม่มี val/var จะอยู่เฉพาะภายในตัวสร้าง คุณสามารถใช้พารามิเตอร์เหล่านี้ในบล็อก init หรือตัวเริ่มต้นคุณสมบัติ แต่จะเข้าถึงในภายหลังไม่ได้
class Logger(prefix: String) {
val msg = "$prefix: ready"
}
fun main() {
val l = Logger("[INFO]")
println(l.msg)
// l.prefix // ERROR — not a property
}ค่าเริ่มต้นของพารามิเตอร์
กำหนดค่าเริ่มต้นให้พารามิเตอร์ของตัวสร้าง เพื่อหลีกเลี่ยงโค้ดซ้ำซ้อนจากรูปแบบโอเวอร์โหลด
class User(
val name: String,
val age: Int = 0,
val email: String = ""
)
fun main() {
println(User("Ana").age) // 0
println(User("Ben", 25).email) // ""
println(User("Cal", 30, "c@x.io").email)
}อาร์กิวเมนต์แบบระบุชื่อ
ข้ามการเรียงลำดับตามตำแหน่ง แล้วระบุชื่อพารามิเตอร์ ณ จุดเรียกใช้ ซึ่งมีประโยชน์อย่างยิ่งเมื่อมีค่าเริ่มต้น
class HttpClient(
val baseUrl: String,
val timeoutMs: Int = 5000,
val retries: Int = 3
)
fun main() {
val c = HttpClient(
baseUrl = "https://api.example.com",
retries = 5
)
println("retries=${c.retries} timeout=${c.timeoutMs}")
}การกำหนดการมองเห็นของตัวสร้าง
ใช้ private constructor เพื่อป้องกันการสร้างอินสแตนซ์จากภายนอก ซึ่งมักใช้ร่วมกับเมธอดโรงงาน
class Singleton private constructor() {
companion object {
val instance = Singleton()
}
}
fun main() {
val s = Singleton.instance
println(s)
}ตัวสร้างรอง
เพิ่มตัวสร้างเพิ่มเติมด้วยคำสำคัญ constructor โดยตัวสร้างเหล่านี้ต้องส่งต่อไปยังตัวสร้างหลักด้วย this(...)
class Point(val x: Int, val y: Int) {
constructor(value: Int) : this(value, value)
}
fun main() {
println("${Point(3).x}, ${Point(3).y}") // 3, 3
}ตัวสร้างพร้อมการกำหนดการมองเห็น
คุณสามารถกำหนดการมองเห็นที่แตกต่างกันให้ตัวสร้างแต่ละตัวได้ ซึ่งมีประโยชน์สำหรับไลบรารี
class Lib internal constructor(val key: String) {
companion object {
fun create(key: String) = Lib(key)
}
}
fun main() {
println(Lib.create("abc").key)
}ทบทวนบล็อกการเริ่มต้น
โค้ดที่ควรทำงานระหว่างการสร้างอินสแตนซ์ให้ใส่ไว้ในบล็อก init { } บล็อกการเริ่มต้นหลายบล็อกจะทำงานตามลำดับในซอร์สโค้ด
class Validator(val value: String) {
init { require(value.isNotBlank()) { "value cannot be blank" } }
}
fun main() {
println(Validator("ok").value)
// Validator("") // throws IllegalArgumentException
}การรวมคุณสมบัติและตรรกะ
การประกาศคุณสมบัติ ตัวสร้างรอง และบล็อกการเริ่มต้น สามารถประกอบกันเป็นกระบวนการเริ่มต้นที่ยืดหยุ่น
class Account(
val owner: String,
initialBalance: Double = 0.0
) {
var balance: Double = initialBalance
private set
init {
require(initialBalance >= 0) { "balance must be non-negative" }
}
fun deposit(amount: Double) { balance += amount }
}
fun main() {
val a = Account("Alice", 100.0)
a.deposit(50.0)
println("${a.owner}: ${a.balance}") // Alice: 150.0
}ตรวจสอบอย่างรวดเร็ว
คำสำคัญ val ทำอะไรเมื่อใช้กับพารามิเตอร์ของตัวสร้างหลัก
ทบทวน
ตัวสร้างหลักอยู่ในส่วนหัวของคลาส ใช้ val/var สำหรับพารามิเตอร์คุณสมบัติ ส่วนพารามิเตอร์เปล่าจะอยู่เฉพาะในตัวสร้าง เพิ่มค่าเริ่มต้นเพื่อลดจำนวนโอเวอร์โหลด และใส่ตรรกะการตั้งค่าในบล็อก init ตัวสร้างรองจะส่งต่อการทำงานผ่าน this(...)
คำถามที่พบบ่อย
บทเรียน “คอนสตรักเตอร์หลักและพารามิเตอร์พร็อพเพอร์ตี” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คอนสตรักเตอร์หลักและพารามิเตอร์พร็อพเพอร์ตี” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คอนสตรักเตอร์หลักและพารามิเตอร์พร็อพเพอร์ตี”
ประกาศคลาสด้วยคอนสตรักเตอร์หลักและการประกาศพร็อพเพอร์ตีภายในบรรทัดเดียวกัน คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “คอนสตรักเตอร์หลักและพารามิเตอร์พร็อพเพอร์ตี” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คอนสตรักเตอร์หลักและพารามิเตอร์พร็อพเพอร์ตี
- บล็อก init และลำดับการเริ่มต้น
- Getter และ Setter แบบกำหนดเองด้วย field
- lateinit และการเริ่มต้นแบบ Lazy