Kotlin adalah bahasa berorientasi objek. Dalam bahasa berorientasi objek, sesuatu yang tidak menjadi objek adalah batasan yang sangat melumpuhkan. Kelas bukan objek, tapi objek adalah objek (ya!), Jadi pertanyaannya seharusnya: mengapa bahasa tidak menggunakan objek pengiring?
Aspek lain adalah kesederhanaan: mengapa memiliki dua hal, objek dengan anggota contoh dan kelas dengan anggota statis ketika Anda hanya dapat memiliki objek dengan anggota contoh?
Alternatif yang digunakan dalam banyak bahasa yang diturunkan dari Smalltalk, adalah membuat kelas itu sendiri objek. Misalnya dalam kelas Smalltalk adalah contoh hirarki paralel dari metaclasses . Di Ruby, kelas adalah instance dari Classkelas (dan ya, itu berarti Classturunan dari dirinya sendiri). Dalam hal itu, "metode kelas" sebenarnya hanya metode instance normal dari kelas metaclass. Saya tidak tahu mengapa desain ini tidak dipilih di Jawa (mengingat kaitannya dengan Smalltalk), tetapi mungkin ada hubungannya dengan menyederhanakan sistem tipe (perhatikan bahwa sebagian besar bahasa dengan objek kelas-sebagai-objek cenderung menjadi bahasa dinamis).