نمایش نتایج 1 تا 6 از 6

نام تاپیک: کمک به درک this

  1. #1

    Question کمک به درک this

    سلام

    داشتم آموزش جاوا رو میدیم (New Booston) که عنوان فیلم toString بود ، این کدهاش :

    public class MyObject {

    private int a;
    private int b;
    private int c;

    public MyObject(int aa, int bb, int cc) {
    a = aa;
    b = bb;
    c = cc;
    System.out.printf("The constractur for this is %s\n", this);
    }

    public String toString() {
    return String.format("%d/%d/%d", a, b, c);
    }

    }


    public class Main {

    public static void main(String[] args) {

    MyObject myObject = new MyObject(1, 2, 3);

    }

    }


    خروجی :
    The constractur for this is 1/2/3


    حالا مشکلم اینه که نمیتونم درک کنم در متد سازنده کلاس MyObject وقتی خروجی رو چاپ میکنه با نوشتن this چجوری متد toString اونجا اجرا میشه؟

    پیشاپیش ممنونم ،برای تاپیکهم عنوان بهتر از این نتونستم سرهم کنم.

  2. #2
    کاربر دائمی آواتار cups_of_java
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    40
    پست
    1,544

    نقل قول: کمک به درک this

    این چاپ شدن کار this‌ نیست و ربطی به خود اون نداره اصن. This واسه اشاره کردن به شی جاری شماست که حتمن اینو میدونی.
    حالا وقتی شما یک شی رو با عملگر + با یه String‌دیگه میچسبونی اون شی باید string‌شه تا بتونه با یه string دیگه بچسبه دیگه بنابراین اتوماتیک متد toStringاش صدا میشه:

    MyClass c = new MyClass();
    String sample = "Salaaam " + c;

  3. #3
    کاربر دائمی آواتار cups_of_java
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    40
    پست
    1,544

    نقل قول: کمک به درک this

    عین همین واسه printf‌ هم هست. که باید متغیر هایی که بهش میدین رو string کنه برابراین روشون متد toString رو صدا میزنه

  4. #4

    نقل قول: کمک به درک this

    پس که این طور ، لطف کردید ، وقتی اسم متد toString رو عوض کردم جواب دیگه ای داد
    The constractur for this is MyObject@60991f

  5. #5

    نقل قول: کمک به درک this

    اینجا که this وجود نداره عزیز جان.

    احتمالا سوالت اینه که چطوری toString خودکار اجرا شده.

    این کار System.out.print هست. که اگر بهش String بدی خروجی میده. اگر primitive بدی میاد ازش String میسازه بعد خروجی میده. و هر Object ی که بدی (توی جاوا غیر پریمیتوها همه چیز Object ه) خودش متد toString رو صدا میکنه و خروجی میگیره.
    اینو توی دوره آموزش جاوا توضیح داده بودم.

  6. #6
    کاربر دائمی آواتار cups_of_java
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    40
    پست
    1,544

    نقل قول: کمک به درک this

    نقل قول نوشته شده توسط #root# مشاهده تاپیک
    پس که این طور ، لطف کردید ، وقتی اسم متد toString رو عوض کردم جواب دیگه ای داد
    The constractur for this is MyObject@60991f
    بخاطر اینکه toString متد کلاس پدرشه (کلاس Object) که همه کلاس ها از اون به طور اتوماتیک به ارث میبرن. و به طور پیش فرض کارش این هست که آدرس حافظه شی رو چاپ میکنه.
    پس اون متد toString در واقع override متد toString کلاس Object هست که وقتی اسمش رو عوض کردی دیگه فراخوانی نمیشه و همون toString کلاس Object صدا زده میشه.

تاپیک های مشابه

  1. کمک در درک minimax algorithm
    نوشته شده توسط fshb_ 1370 در بخش Android Studio
    پاسخ: 3
    آخرین پست: جمعه 25 مرداد 1392, 11:58 صبح
  2. کمک در درک یک کد
    نوشته شده توسط fshb_ 1370 در بخش Android Studio
    پاسخ: 4
    آخرین پست: یک شنبه 15 اردیبهشت 1392, 22:59 عصر
  3. کمک در درک یک tutorial در مورد SQLite
    نوشته شده توسط fshb_ 1370 در بخش Android Studio
    پاسخ: 6
    آخرین پست: چهارشنبه 11 اردیبهشت 1392, 19:37 عصر
  4. کمک در درک یک تکه کد.
    نوشته شده توسط fshb_ 1370 در بخش Android Studio
    پاسخ: 0
    آخرین پست: پنج شنبه 12 بهمن 1391, 23:31 عصر
  5. سوال: کمک در درک مفهوم دات نت
    نوشته شده توسط qazwsx در بخش برنامه نویسی در Delphi Prism
    پاسخ: 9
    آخرین پست: پنج شنبه 28 شهریور 1387, 01:20 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •