دستگرمی

دستگرمی دهم

دستگرمی این هفته

برنامه زیر را در نظر بگیرید:

خروجی برنامه فوق کدام گزینه است؟

  • 123456789123456789 (60%, 3 رای)
  • 375937592648126481 (40%, 2 رای)
  • 357935792468124681 (0%, 0 رای)
  • 357924681 (0%, 0 رای)
  • 375926481 (0%, 0 رای)

مجموع رای ها: 5

Loading ... Loading ...

پاسخ

پاسخ صحیح: ۳۵۷۹۳۵۷۹۲۴۶۸۱۲۴۶۸۱

همان‎طور که در دستگرمی چهارم هم توضیح داده شد، ترتیب مقداردهی اولیه به این صورت است:

یک بار برای هر کلاس (اول برای کلاس پدر و سپس برای کلاس فرزند):

  • مقدارهی درخط به متغیرهای استاتیک و بلوک‌های استاتیک (static block) – به ترتیبی که در کد نوشته شده‎اند.

بک بار به ازای ایجاد هر شی (اول برای کلاس پدر و سپس برای کلاس فرزند):

  • مقداردهی درخط به متغیرها و بلوک‎های مقداردهی اولیه (instance initialization block) – به ترتیبی که در کد نوشته شده‎اند و سپس فراخوانی سازنده (Constructor)

با این توضیحات، سراغ متد main می‎رویم:

در خط ۵۲، یک شی از کلاس Initialization2 می‎خواهد ایجاد شود.

برای این منظور ابتدا به سراغ کلاس پدرش یعنی کلاس Initialization1 می‎رویم. ابتدا متغیرها و بلوک‎های استاتیک کلاس پدر مقداردهی می‎شوند. با مقداردهی متغیرها و بلوک‎های استاتیک در کلاس Initialization1، به ترتیب اعداد ۳۵۷۹ در خروجی چاپ می‎شود.

سپس متغیرها و بلوک‌های استاتیک کلاس فرزند یعنی Initialization2 مقداردهی می‌شوند و در نتیجه باز هم به ترتیب اعداد ۳۵۷۹ در خروجی چاپ می‌شوند.

حال، دوباره به سراغ کلاس پدر رفته و ابتدا متغیرها و بلوک‌های غیراستاتیک مقداردهی شده و سپس سازنده این کلاس فراخوانی می‌شود. در نتیجه مقدار ۲۴۶۸۱ در خروجی چاپ می‌شود. پس از کلاس پدر، مجددا به سراغ کلاس فرزند می‌رویم و متغیرها و بلوک‌های غیراستاتیک کلاس فرزند را به ترتیب مقداردهی کرده و در نهایت نیز سازنده این کلاس فراخوانی می‌شود. پس مقدار ۲۴۶۸۱ نیز در ادامه خروجی چاپ خواهد شد.

با مقداردهی متغیرها و بلوک‎های غیراستاتیک، به ترتیب اعداد ۲۴۶۸ در خروجی چاپ می‎شود.

خروجی نهایی در کنسول، عبارت است از ۳۵۷۹۳۵۷۹۲۴۶۸۱۲۴۶۸۱

.

.

.

با ما همراه باشید

آدرس کانال تلگرام: JavaCupIR@

آدرس اکانت توییتر: JavaCupIR@

آدرس صفحه اینستاگرام: javacup.ir

آدرس گروه لینکدین: Iranian Java Developers

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا