مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت دهم

سلام و خسته نباشید خدمت همه
قسمت نهم از مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید رو در پیش داریم که میتونید از طریق لینک های زیر به توضیحات و قسمت های قبلی دسترسی داشته باشید ، امروز میریم سراغ ده سوال بعدی...
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت اول
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت دوم
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت سوم
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت چهارم
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت پنجم
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت ششم
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت هفتم
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت هشتم
مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت نهم


۹۱ـ overload کردن توابع در جاوا چه معنی دارد ؟

overload کردن توابع یعنی داشتن دو یا چند تابع به همان نام در همان کلاس با ورودی های مختلف.

نکات:

  • هنگام overload کردن یک تابع حتما باید لیست ورودی ها تغییر کند
  • توابع overload شده می توانند نوع خروجی تابع را عوض کنند
  • توابع overload شده می توانند سطح دسترسی را عوض کنند
  • توابع overload شده می توانند گستره ی خطا های ( exception ) احتمالی توابع را تغییر دهند
  • یک تابع می تواند در همان کلاس یا در یک زیر کلاس overload شود


۹۲ـ override کردن توابع به چه معناست ؟

override کردن توابع هنگامی اتفاق می افتد که یک زیر کلاس یک تابع با همان لیست ورودی ها و نوع خروجی که در ابرکلاس است را تعریف نماید.

نکات:

  • شما نمی توانید یک متد با سطح دسترسی عمومی ( public ) را به صورت محافظت شده ( protected ) دوباره override کنید.
  • شما نمی توانید یک متد final را override کنید
  • شما نمی توانید یک متد static را override کنید
  • متد های overload شده نیز می توانند override شوند


۹۳. چرا نباید متد های abstract را در متد سازنده ( constructor ) فراخوانی کرد ؟

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


۹۴. تفاوت ترکیب و وراثت را بیان کنید:

ترکیب در اصل به معنی " استفاده از... " یا " دارای... " می باشد. مثلا در مثال پایین کلاس Employee دارای کلاس Person می باشد ولی از کلاس Person ارث بری نکرده است.

class Person {
    String Title;
    String Name;
    Int Age;
    public Person(String title, String name, String age) {
        this.Title = title;
        this.Name = name;
        this.Age = age;
    }
}
class Employee {
    Int Salary;
    private Person person;
    public Employee(Person p, Int salary) {
        this.person = p;
        this.Salary = salary;
    }
}


ـ۹۵. تفاوت Encapsulation و Abstraction چیست ؟

  • ـ Abstraction در اصل به نمای خارجی کلاس تمرکز دارد اما Encapsulation از دیدن نمای داخلی کلاس با مخفی سازی اطلاعات جلوگیری می کند
  • ـ Abstraction مشکلات طراحی یک کلاس را برطرف می کند در حالی که Encapsulation یک نوع پیاده سازی است.


۹۶. تفاوت متد سازنده و دیگر متد ها در چیست ؟

متد سازنده بایم همان نام کلاس را داشته باشد و همچنین هیچ نوع خروجی ای نباید داشته باشد.
متد سازنده وظیفه ی initiate اجزای کلاس را دارد اما باقی توابع همچین وظایفی ندارند و تنها عضوی از کلاس می باشند.
متد های سازنده نمی توانند ارث بری کنند اما اگر کلاس مشتق شده باشد می تواند متد سازنده ابرکلاس خود را فراخوانی کند.

سازنده ها می توانند از تابع this استفاده کنند تا به متد های سازنده ی دیگر در همان کلاس دسترسی پیدا کنند.
سازنده ها می توانند از تابع super استفاده کنند تا به متد سازنده ابرکلاس خود دسترسی پیدا کنند.

متد های غیر سازنده برای فراخوانی نیاز به نمونه ای ( instance ) از کلاس دارند به همین دلیل نمونه ی کلاس باید توسط کلمه کلیدی new ساخته شود.
متد های کلاسی‌، متد هایی هستند که به صورت استاتیک تعریف می شوند و برای فراخوانی آن ها نیاز به نمونه گیری از کلاس نیست.


۹۷. تفاوت نمونه گیری از یک کلاس و initiate کردن یک کلاس چیست ؟

initiate کردن یک کلاس به معنای گرفتن حافظه برای متغیر آن کلاس است. متغیر ها باید مقدار داشته باشند وگرنه سیستم همان مقدار قبلی درون آن قسمت از حافظه را به متغیر می دهد. برای جلوگیری از این مشکل زبان جاوا مقدار پیش فرض متغیر ها را برابر نوع ( type ) اطلاعات قرار می دهد.

به روند تخصیص مقدار به یک متغیر از پیش تعریف شده نمونه گیری از یک کلاس می گویند.



۹۸. داده ها در جاوا pass by reference هستند یا pass by value ؟

خود جاوا همیشه pass by value است.
جاوا یک کپی از مقدار متغیر را به تابع می دهد و سپس کار ها روی کپی انجام می شود و هیچ نتیجه ای به متد اصلی اعمال نمی شود.
جاوا آدرس همان متغیر را کپی می کند و به تابع می دهد و هنوز پارامتر ورودی یک تابع به همان متغیر اشاره می کند اما تمامی تغییرات در همان تابع باقی می ماند.


۹۹. مقادیر ابتدایی در جاوا چیستند ؟

  • مقدار اولیه یک byte برابر 0 می باشد
  • مقدار اولیه یک short برابر 0 می باشد
  • مقدار اولیه یک int برابر 0 می باشد
  • مقدار اولیه یک long برابر 0L می باشد
  • مقدار اولیه یک float برابر 0.0f می باشد
  • مقدار اولیه یک byte برابر 0.0d می باشد
  • مقدار اولیه یک char برابر '0000\u' می باشد
  • مقدار اولیه یک String یا هر شئ دیگر برابر null می باشد
  • مقدار اولیه یک boolean برابر false می باشد


۱۰۰. تفاوت == و تابع equals در جاوا چیست ؟

در اصل == آدرس دو شئ را مقایسه می کند اما تابع equals محتوای دو شئ را مقایسه می کند.
به عبارتی دیگر == بررسی می کند که آیا دو شئ به یک مکان از حافظه اشاره می کنند یا نه. اما تابع equals بررسی می کند که آیا مقادیر دو شئ با هم برابر است یا خیر


ترجمه متنی از Anitaa Murthy

تشکر بابت مطالعه پست
لایک و حمایت یادتون نره
سوالی بود درخدمتم
نوشته شده با ❤️ توسط کوچیکتون حمیدرضا شجراوی =)))