۱ رحیم
در مورد superکلاس متد onActivityResult
پوریا شفیعی حل شده توسط پوریا شفیعی

سلام خسته نباشید.

دو تا سوال داشتم، 

1-استاد ببخشید شما در اموزش متد super کلاس متد onActivtyResult رو برداشتین ولی وقتی من super رو حذف می‌کنم برام ارور می‌ده و می‌گه که باید متد رو بر گردونید، می‌خواستم در این مورد راهنماییم بکنید.

2- و استاد این متد super  کلاس کارش چیه می‌دونم که متد کلاس پدر هستش ولی می‌خواستم کارش رو در متدonActivityResult بدونم چیه؟؟؟

سلام و احترام

اول باید اشاره بشه که super کلمه ی کلیدی هست که دسترسی به کلاس والد رو فراهم می‌کنه و متد ()super یک استفاده ی خاص از این کلمه ی کلیدی هست که کانستراکتور بدون پارامتر (یا در مثال من که کلاس والد دو کانستراکتور داره، نسخه ی پارامتر دار) رو صدا میزنه.

ما مفهومی داریم بنام Method Overriding که به ما اجازه میده متدی که در کلاس والد داریم رو در کلاس خودمون پیاده سازی و شخصی سازی کنیم.

اساس کار ما در اندروید همین قابلیت هست، که فریم وورک اندروید کلاس هایی رو در اختیار ما قرار داده که چارچوب کلی در اونها ساخته شده و ما با شخصی سازی متدهای اون کلاس، نتایج متفاوت در چارچوب اون ساختار رو بدست میاریم.

مثلاً کلاس Activity رو درنظر بگیرید، بسیاری از کارها در متد onCreate صورت میگیره که همیشه بالاش یک Annotation به شکل @Override رو میبینیم، که در واقع اشاره می‌کنه که این متد، Override شده از همین متد در کلاس والد هست. دقیقاً از طریق همین Method Overriding هست که اندروید میدونه که باید چه متدی در کلاس ما رو فراخوانی کنه تا Activity ساخته بشه.

اتفاقاً در همین متد می‌بینیم که قبل از هر چیز، کد super.onCreate() رو صدا میزنیم، همین قابلیت به ما اجازه میده که ابتدا کدهای متد onCreate در کلاس والد رو اجرا کنیم تا هرکاری لازمه برای آماده سازی اکتیویتی ما انجام بده و بعد کدهای خودمون رو می‌نویسیم تا شخصی سازی‌های لازم رو انجام بدیم.

با اینکار Framework تمام پیچیدگی هاش رو از چشم ما پنهان کرده و ما فقط با رعایت این چارچوب برنامه مون رو مینویسیم و میدونیم که با تبعیت از قواعد طرح شده توسط فریم وورک برنامه ی ما به درستی کار خواهد کرد.

نگران نباشید به مرور با مفاهیم اشنا خواهید شد 

بهترین پاسخ
پوریا شفیعی ۱۶ تیر ۱۳۹۹، ۱۷:۳۴