16/10/58

Constructors ในภาษา Java

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 ลูกต่อ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น