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 ชื่อเดิมๆ หลายตัวมีประโยชน์รึปล่าวครับหรือแทบไม่จำเป็นต้องใช้เลย
ก็ได้ Construtor เพิ่มอีก 1
mix5003 Wed, 27/06/2012 - 21:30
ก็ได้ 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)
Constructor
JavaDevil Wed, 27/06/2012 - 22:02
Constructor สร้างได้ชื่อเดียวครับ คือเหมือนกับคลาส จะต่างกันได้ก็แค่ Parameter ครับ
ถ้าหากมี public MyThisTest ()
3000anv Wed, 27/06/2012 - 22:52
ถ้าหากมี
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;}
จะเกิดอะไรขึ้นครับ ตัวใหนจะชี้ไปตัวใหนครับ
จากตัวอย่างที่ยกมาจะ error
soginal Wed, 27/06/2012 - 23:21
In reply to ถ้าหากมี public MyThisTest () by 3000anv
จากตัวอย่างที่ยกมาจะ 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
รบกวนถามการ nested class
3000anv Thu, 28/06/2012 - 10:32
รบกวนถามการ nested class ครับ
class Outer
Outer.this <-----หมายถึง object ที่สร้างจากคลาส Outer หรือ Inner ครับ
nested class ตามข้างบนจะทำให้เกิดอะไรขึ้นครับ
1) หมายถึง object ของ Outer
soginal Thu, 28/06/2012 - 13:07
In reply to รบกวนถามการ nested class by 3000anv
หมายถึง object ของ Outer ครับ
nest class ปกติใช้เพื่อ group class ที่เกี่ยวข้องกันมาไว้ที่เดียวกันครับ จะได้อ่านง่ายและดูแลง่าย
ขอบคุณครับ การ point object
3000anv Thu, 28/06/2012 - 23:03
In reply to 1) หมายถึง object ของ Outer by soginal
ขอบคุณครับ
การ point object เราทำได้เฉพาะกับ object 2 ตัวที่มาจากคลาสเดียวกันเท่านั้น หรือไม่ครับ
หมายถึงการใช้ Outer.this
soginal Fri, 29/06/2012 - 09:23
In reply to ขอบคุณครับ การ point object by 3000anv
หมายถึงการใช้ Outer.this แบบนี้เหรอครับ ถ้าเป็นการใช้งานรูปแบบนี้ class ที่จะเรียกใช้ได้ต้องเป็น nest class เท่านั้น