Thường thì tôi thấy mình trong một tình huống mà tôi có một lớp cha có nhiều tham số tùy chọn, và các tham số tương tự cũng cần phải là tham số tùy chọn trong các lớp con của nó.Kotlin: Làm cách nào để tránh trùng lắp mã trong các nhà xây dựng?
Ví dụ, lớp cha:
abstract class Plugin(val name: String, val version: String = "1.0",
val author: String = "", val description: String = "")
Mở rộng lớp này là một nỗi đau. Dưới đây là một ví dụ lớp con:
abstract class CyclePlugin(name: String, version: String = "1.0", author: String = "",
description: String = "", val duration: Int, val durationUnit: TimeUnit
= MILLISECONDS) : Plugin(name, version, author, description)
Lưu ý: Tôi sẽ trả lời câu hỏi này với giải pháp của tôi. Tôi đang tìm kiếm giải pháp tốt hơn.
Tuy nhiên, một lý do khác để tránh thừa kế :) Nếu những tham số đó là tùy chọn tại sao lại sử dụng chúng trong hàm dựng? Thay vào đó bạn chỉ có thể khai báo thuộc tính thường xuyên 'var optionalProperty: String? = "DefaultValue" 'trong lớp cơ sở. – miensol