الفرق بين class و object في Kotlin: متى نستخدم الكلمة المفتاحية object؟
مرحبًا! لقد بدأت للتو في تعلم Kotlin بعد Java وأصبحت مرتبكًا بشأن الكلمة المفتاحية object. في Java نستخدم new لإنشاء نسخ، و class هو مجرد قالب. لكن في Kotlin أرى أن object يُستخدم في كل مكان: للإعلان عن المفردات (singletons)، ولإنشاء الفئات المجهولة (anonymous classes)، وحتى كـ companion object داخل class.
هذا مثال يربكني:
```kotlin
// هل هذه فئة؟
class MyClass {
fun doSomething() {
println("Hello from class")
}
}
// وهل هذا أيضًا فئة؟
object MyObject {
fun doSomething() {
println("Hello from object")
}
}
// وكيف يُستخدم هذا؟
fun main() {
val instance = MyClass() // حسنًا، أنشئ نسخة من الفئة
MyObject.doSomething() // لكن هنا بدون new؟ لماذا؟
}
```
اشرح لي، من فضلك، ما الفرق الجوهري بين class و object في Kotlin. متى يجب استخدام class ومتى يجب استخدام object؟ ولماذا لا يمكن إنشاء object عبر مُنشئ (constructor) مثل الفئة العادية؟ سأكون ممتنًا للأمثلة.