companion object
- Kotlin kursu
- Orta seviye
- Ders 31/116
- 5 dk
companion object ile sınıf düzeyi üyeler öğrenirsin.
companion object
Bir companion object, sınıfın içine yerleştirilmiş tek bir nesnedir. Üyeleri sınıf adıyla çağrılır; sınıf örneği gerekmez. Bu, fabrika metotları ve sabitler için uygundur.
Örnek: class User(val name: String) { companion object { val default = "misafir" } }. Burada User.default doğrudan erişilir. companion object bir sınıfa bağlı singleton'dır; her sınıf için bir tane olur. Java'daki static üyelere benzer ama yine de gerçek bir nesnedir.
Fabrika metodu
Bir companion object'in en yaygın kullanımı fabrika metotlarıdır. Sınıfın nasıl örnekleneceğini gizler ve tek noktadan örnek oluşturur.
Örnek: class User(val name: String) { companion object { fun default() = User("misafir") } }. Bu yapı User.default() çağrısını sağlar; her zaman "misafir" adlı bir User döndürür. Sınıf dışından User("misafir") yazmak yerine fabrika metodu kullanılır. Bu, yapıcı mantığı tek bir yerde toplar.
Uygulama User fabrika metodunu tanımla
User(val name: String) adında bir sınıf tanımla. İçinde companion object bloğu olsun; fun default(): User metodu User("misafir") döndürsün. main içinde User.default().name değerini println ile yazdır.
Başlangıç kodu
// User sınıfı tanımı
// sınıf içi singleton bloğu ve default fabrika metodu
// main'de default çağır ve name'i yazdırÖrnek çözüm
class User(val name: String) {
companion object {
fun default(): User = User("misafir")
}
}
fun main() {
println(User.default().name)
}Beklenen çıktı
misafir
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 companion object parçalarını eşle
| Kavram | Anlamı |
|---|---|
companion object |
Sınıf içi singleton |
val default |
Sınıf düzeyi sabit |
User.default |
Sınıf adıyla erişim |
her sınıf için tek |
Örnek sayısı |
2 Bir <strong>companion object</strong> içindeki üyeye nasıl erişilir?
- Sınıf örneği üzerinden
- new anahtar kelimesiyle
- Yalnızca alt sınıftan
- Sınıf adıyla doğrudan Doğru cevap
Açıklama: companion object üyeleri sınıf adıyla doğrudan çağrılır.
3 companion object tanımını tamamla
class User(val name: String) {
____ object {
fun default() = User("misafir")
}
}
class User(val name: String) {
companion object {
fun default() = User("misafir")
}
}
Açıklama: companion object sınıf içi singleton tanımlar.