Avatar ·

Kotlin में init-ब्लॉक और कंस्ट्रक्टर के बीच क्या अंतर है?

नमस्ते! मैंने Java के बाद अभी-अभी Kotlin सीखना शुरू किया है और मैं भ्रमित हो गया हूँ। Java में हमारे पास कंस्ट्रक्टर होते हैं, जहाँ हम फ़ील्ड को इनिशियलाइज़ करते हैं। Kotlin में मैं देख रहा हूँ कि हम कंस्ट्रक्टर (प्राइमरी और सेकेंडरी) और विशेष `init`-ब्लॉक दोनों का उपयोग कर सकते हैं। लेकिन मैं पूरी तरह से नहीं समझ पा रहा हूँ कि `init`-ब्लॉक की आवश्यकता क्यों है, अगर सब कुछ कंस्ट्रक्टर में किया जा सकता है?\n\nउदाहरण के लिए, मेरे पास यह कोड है:\n\n```kotlin\nclass Person(name: String) {\n val name: String\n init {\n this.name = name.uppercase()\n }\n}\n```\n\nJava की तरह कंस्ट्रक्टर के बॉडी में `init` क्यों नहीं लिख सकते? या यह एक और उदाहरण है:\n\n```kotlin\nclass Rectangle(val width: Int, val height: Int) {\n val area: Int\n init {\n area = width * height\n }\n}\n```\n\nक्या इसे सीधे प्राइमरी कंस्ट्रक्टर में किया जा सकता है? किसमें