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 ลูกต่อ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น