Constructors ในภาษา Java
บทความนี้เรามาทำความรู้จักกับ Constructors ในภาษา Java กันครับ ซึ่งใน Java นั้น- ทุก ๆ class จะต้องมี constructor อย่างน้อย 1 constructor
- ถ้าเราไม่ได้เขียน constructor ใน Class แล้ว compiler จะสร้าง default constructor มาให้
- constructor นั้นจะใช้ในการสร้าง object
- constructor นั้นจะคล้าย ๆ กับ method ดังนั้นในบางครั้งก็จะเรียกว่า constructor method
- constructor นั้นจะไม่มีค่า return
- constructor จะต้องมีชื่อเดียวกับชื่อ Class
- constructor จะมีหรือไม่มี argument ก็ได้
- constructor สามารถใช้ในการกำหนดค่าเริ่มต้นให้กับ object ได้
Syntax ของ constructor
มาดู Syntax ของ constructor กันก่อนครับ ตามด้านล่างเลยconstructorName (listOfArguments) {
[constructor body]
}
จาก Syntax เรามาดูโค้ดที่มี constructor กันหน่อย ตามโค้ดด้านล่างเลย
package info.doesystem.howto;
public class DoesystemInfo {
// constructor
DoesystemInfo(){
// no return value
}
public static void main(String[] args) {
DoesystemInfo doesystem = new DoesystemInfo();
}
}
ถ้าเราต้องการหลาย ๆ constructor ก็สามารถเขียนได้ ดังนี้
package info.doesystem.howto;
public class DoesystemInfo {
private int view;
// constructor
DoesystemInfo(){
// no return value
// set initial field
this.view = 1;
}
DoesystemInfo(int view){
// no return value
// set initial field
this.view = view;
}
public int getView() {
return view;
}
public void setView(int view) {
this.view = view;
}
public static void main(String[] args) {
DoesystemInfo doesystem = new DoesystemInfo(11);
System.out.println(doesystem.getView());
}
}
ลำดับการ Run ของ Constructor
รู้มาแล้วว่าทุก ๆ Class จะมี Constructor อย่างน้อย 1 Constructor แล้วมีคำถามไหมว่า ถ้าเกิดมีการ Extends Class ขึ้นมา Constructor อันไหนจะ Run ก่อนกัน ดังนั้นลองเขียนโค้ดแล้วลองรันดูครับpackage info.doesystem.howto;
class Doesystem {
public Doesystem() {
System.out.println("Java Doesystem Constructor");
}
}
public class DoesystemInfo extends Doesystem {
public DoesystemInfo() {
System.out.println("Java DoesystemInfo Constructor");
}
public static void main(String[] args) {
DoesystemInfo doesystem = new DoesystemInfo();
}
}
ผลลัพธ์จากการรันโค้ดที่ได้ คือ
Java Doesystem Constructor
Java DoesystemInfo Constructor
จากผลลัพธ์จะเห็นว่า Class แม่จะรัน constructor ก่อน จากนั้นจึงมารัน constructor ที่ Class ลูกต่อ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น