Tags:

public class MyThisTest {
private int a;

public MyThisTest() {
this(42); // calls the other constructor
}

public MyThisTest(int a) {
this.a = a; // assigns the value of the parameter a to the field of the same name
}

สมมุติผมสร้าง object ขึ้นมา ผมสงสัยว่าถ้าหากมี MyThisTest อีกหนึ่ง constructor จะเกิดอะไรขึ้นครับ

แล้วการสร้่าง constructor ชื่อเดิมๆ หลายตัวมีประโยชน์รึปล่าวครับหรือแทบไม่จำเป็นต้องใช้เลย

Get latest news from Blognone
By: mix5003
AndroidUbuntuWindows
on 27 June 2012 - 21:30 #437870

ก็ได้ Construtor เพิ่มอีก 1 ตัวไงครับ

ข้อดีเหรอครับ ก้ประมาณว่าเป็นการกำหนด Default ของ Paremeter ได้อ่ะครับ

เช่นอย่างของคุณ ประกาศได้ 2 แบบคือ
MyThisTest obj = new MyThisTest();
// ถ้าประกาศแบบนี้ค่า a ของ class จะเป็น 42 ตามนิยามของ MyThisTest() ที่ไปเรียก ตัวเองและส่งค่า 42 ลงไป

แต่ถ้าประกาศเป็น

MyThisTest obj = new MyThisTest(1);
// ถ้าประกาศแบบนี้ค่า a ของ class จะเป็น 1 ตามนิยามของ MyThisTest(int a)

By: JavaDevil
iPhoneUbuntuIn Love
on 27 June 2012 - 22:02 #437888

Constructor สร้างได้ชื่อเดียวครับ คือเหมือนกับคลาส จะต่างกันได้ก็แค่ Parameter ครับ

By: 3000anv
iPhoneIn Love
on 27 June 2012 - 22:52 #437910

ถ้าหากมี

public MyThisTest () {this(42);}

public MyThisTest(int a) { this.a = a;}

public MyThisTest () {this(99);}

public MyThisTest () {this(18);}

public MyThisTest(int b) { this.b = b;}

จะเกิดอะไรขึ้นครับ ตัวใหนจะชี้ไปตัวใหนครับ

By: soginal
AndroidIn Love
on 27 June 2012 - 23:21 #437923 Reply to:437910
soginal's picture

จากตัวอย่างที่ยกมาจะ error ครับ ใช้ไม่ได้เพราะมี ctor ที่มี signature ซ้ำกัน

โดย compiler จะแยกว่าใช้ ctor ตัวใดจาก parameter ครับ
เช่น มี ctor 3 ตัว

public MyThisTest ()

public MyThisTest (int)

public MyThisTest (int, int)

หากเรียกใช้ MyThisTest(10,20) มันก็จะไปเรียกใช้ ctor ตัวที่ 3

หากเรียกใช้ MyThisTest(10) มันก็จะไปเรียกใช้ ctor ตัวที่ 2

By: 3000anv
iPhoneIn Love
on 28 June 2012 - 10:32 #438169

รบกวนถามการ nested class ครับ

class Outer

   class Inner

          void foo ()

                 Outer a = Outer.this;

1) Outer.this <-----หมายถึง object ที่สร้างจากคลาส Outer หรือ Inner ครับ

2) nested class ตามข้างบนจะทำให้เกิดอะไรขึ้นครับ

By: soginal
AndroidIn Love
on 28 June 2012 - 13:07 #438271 Reply to:438169
soginal's picture

1) หมายถึง object ของ Outer ครับ

2) nest class ปกติใช้เพื่อ group class ที่เกี่ยวข้องกันมาไว้ที่เดียวกันครับ จะได้อ่านง่ายและดูแลง่าย

By: 3000anv
iPhoneIn Love
on 28 June 2012 - 23:03 #438501 Reply to:438271

ขอบคุณครับ

การ point object เราทำได้เฉพาะกับ object 2 ตัวที่มาจากคลาสเดียวกันเท่านั้น หรือไม่ครับ

By: soginal
AndroidIn Love
on 29 June 2012 - 09:23 #438646 Reply to:438501
soginal's picture

หมายถึงการใช้ Outer.this แบบนี้เหรอครับ ถ้าเป็นการใช้งานรูปแบบนี้ class ที่จะเรียกใช้ได้ต้องเป็น nest class เท่านั้น