چند ابهام در مورد کلاس، میراث بری و متد
سلام دوستان در مورد ماهیت کلاس ها و همچنین ارث بری ابهاماتی برای من به وجود آمده از آنجا که پاسخ این سوالات و رفع این ابهام ها برای ادامه آموزش ها و درک بهتر برنامه نویسی برای من مهم هستند ممنون میشم دوستان کمک کنند و به سوالات پاسخ دهند:
1. تا زمانی که متدهای کلاس والد را در کلاس فرزند فرانخوانیم این متدها اجرا نخواهند شد ولی چگونه است که استاد در آموزش مربوط به چرخه زندگی اکتیویتی با ارث بری کلاس ها از ActivityEnhanced متد onResume() رو بدون اینکه در subClass این کلاس فراخوانی کند اجرا می شود، در حالی که برای اجرای متد onCreate() این متد از کلاس Activity باید Override بشه و بعد دستورات ما رو اجرا کنه، به عبارت دیگر آیا تمام متدهای والد در هنگام اجرای کلاس فرزند فراخوانده و اجرا می شوند؟
public class ActivityEnhanced extends Activity {
@Override
protected void onResume() {
Log.i(G.logTag, "onResume from " + getClass().getSimpleName());
G.currentActivity = this;
super.onResume();
}
@Override
protected void onPause() {
Log.i(G.logTag, "onPuse from " + getClass().getSimpleName());
super.onPause();
------------------------------------------------------------------------------------------------------------
public class ActivityFirst extends ActivityEnhanced {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form1);
Button btnGoNext = (Button) findViewById(R.id.btnGoNext);
btnGoNext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(ActivityFirst.this, ActivitySecound.class);
ActivityFirst.this.startActivity(intent);
}
});
Log.i(G.logTag, "onCreate from ActivityFirst");
Toast.makeText(G.context, "Hello", Toast.LENGTH_SHORT).show();
}
}
سوال دوم اینکه چه استفاده هایی از کلاس می شود؟ میدونم که با ساخت کلاس و تعریف Attribute و behavior در کلاس و از طریق میراث بری و یا ساخت یک نمونه از کلاس می شود به عناصر و رفتارهای تعریف شده در کلاس دسترسی داشت آیا از کلاس ها استفاده دیگری هم می شود؟ مورد زیر چه کارکردی از کلاس را نشان می دهد؟ در این مورد آیا می شود مقدارای را در یک کلاس ذخیره کرد مثلا همانطور که برای متغیرها مقداری را ذخیره می کنیم.
Bundle extras = getIntent().getExtras();
public static Activity currentActivity = ActivityFirst;
String sentence = "my sentense";
ببخشید که یکم طولانی شد.
با سلام
سوالتون یکم نا مفهموم بود خیلی سخت متوجه شدم. برای اجرای متد والد اگر این متد در فرزند هم باشه با کلیدواژه Super به متد والد دست پیدا میکنید.
و اما سوال دوم که کلاس کارش همیینه وقتی یک نمونه از یک شی میسازید یعنی قسمت اول یک ارجاع ایجاد کرده و در قسمت دوم حافظه ساخته و این ارجاع به اون حافظه اشاره میکنه پس میتونیم ارجاع های دیگری بسازیم که به این حافظه اشاره کنن
کلاس استاتیک هم در موقع لود کلاس یک بار اجرا میشه
اما کلاس رشته وضعیتش یکم فرق میکنه که بهتره فعلا به اون فکر نکنید
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .