آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

چند ابهام در مورد کلاس، میراث بری و متد

115776  10 سال پیش  10 سال پیش
0 0

سلام دوستان در مورد ماهیت کلاس ها و همچنین ارث بری ابهاماتی برای من به وجود آمده از آنجا که پاسخ این سوالات و رفع این ابهام ها برای ادامه آموزش ها و درک بهتر برنامه نویسی برای من مهم هستند ممنون میشم دوستان کمک کنند و به سوالات پاسخ دهند:

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";

ببخشید که یکم طولانی شد.

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
k112  10 سال پیش
0 0

با سلام

سوالتون یکم نا مفهموم بود خیلی سخت متوجه شدم. برای اجرای متد والد اگر این متد در فرزند هم باشه با کلیدواژه Super به متد والد دست پیدا میکنید.

 و اما سوال دوم که کلاس کارش همیینه وقتی یک نمونه از یک شی میسازید یعنی قسمت اول یک ارجاع ایجاد کرده و در قسمت دوم حافظه ساخته و این ارجاع به اون حافظه اشاره میکنه پس میتونیم ارجاع های دیگری بسازیم که به این حافظه اشاره کنن

کلاس استاتیک هم در موقع لود کلاس یک بار اجرا میشه

اما کلاس رشته وضعیتش یکم فرق میکنه که بهتره فعلا به اون فکر نکنید

0 0
ممنون از پاسختون ولی برای اینکه یکم سوال واضح تر بشه، یک کلاس داریم که از کلاس دیگه ارث بری می کنه مثلا کلاس ActivityFirst که از کلاس Activity ارث بری می کنه، حالا ما یکسری کد درون متد onCreate(){} کلاس FirstActivity می نویسیم که با اجرای این کلاس این خطوط کد اجرا میشن، سوال من اینه که آیا خارج از متدهایی که ما در کلاس ActivityFirst تعریف کردیم، متدهایی دیگری هم از کلاس Activity که کلاس ActivityFirst از اون extends شده اجرا میشه؟ این سوال به این دلیل در ذهن من ایجاد شد که استاد در آموزش مربوط به چرخه اجرا بدون اینکه متد onResum() رو در کلاس تعریف کنه Log هایی مربوط به این متد در logcat ایجاد کرد، فقط این متد رو در superClass تعریف کرد بدون تعریف این متد در subClass. و زمانی که برنامه رو روی امولاتور اجرا می کنه و با اجرای subClass متد onRsume() که در superClass تعریف شده بدون اینکه در subClass تعریف بشه اجرا شد. (10 سال پیش)
+1 0
ببینید وقتی کلاسی از کلاس دیگر ارث بری میکنه همه کلاس های پدر به فرزند هم میرسه بدون نیاز به تعریف اگر تعریفش کنی در اون حالت اورراید میشه .... (10 سال پیش)
0 0
درسته ، وقتی firstActivity از Activity ارث میبره تمام متدهای کلاس Activity رو هم به ارث میبره و در موقع نیاز فراخوانی میشه ، چه شما فراخوانی کرده باشی چه نکرده باشی . فقط وقتی که شما فراخوانی میکنی ، یعنی میگی علاوه بر کدهای کلاس سوپر ، کدهای منم اجرا کن . (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .