บทที่ 6 ตอน 2 รันโปรแกรมจะแสดงบนกล่องข้อความ 2 หน้าต่างตามลำดับ
(5) การรันโปรแกรมจะแสดงบนกล่องข้อความ 2
หน้าต่างตามลำดับ ดังภาพ
1. การโอเวอร์ไหลดเมธอด
(Overloads
Method)
คือ การที่มีเมธอดในคลาสชื่อซ้ำกัน
แต่รายการพารามิเตอร์หรือการส่งค่ากลับจะต้องแตกต่างกัน เช่น
จำนวนพารามิเตอร์ที่ไม่เท่ากัน
ชนิดข้อมูลของพารามิเตอร์ที่ต่างกัน ชนิดการส่งค่ากลับต่างกัน
การกระทำนี้จะทำให้ออบเจ็กต์มีชื่อเมธอดเหมือนกันแต่ความสามารถแตกต่างกันได้ เช่น
ในตัวอย่างที่จะกล่าวต่อไปนี้จะเป็นเมธอดการเพิ่มรายการเพลงโดยจะมีชื่อเมธอดซ้ำกัน
3 กรณีคือ แสดงรายการเพลงบน MessageBox ComboBox และ ListBox
(1) ออกแบบหน้าจอพร้อมตั้งชื่อ ดังภาพ
(2) สร้างคลาสที่ชื่อว่า clsMusic.vb จากนั้นเขียนโค้ดเพื่อสร้างเมธอดดังต่อไปนี้
|1| Public Class clsMusic
|2| Public Overloads Sub addMusic()
|3| Dim s As String = ""
|4| s += "รักเธอหมดหัวใจ" + vbCrLf
|5| s += "หลักฐานบนใบหน้า" + vbCrLf
|6| MsgBox(s)
|7| End Sub
|8| '---------------------------------
|9| Public Overloads Sub addMusic(prmObject
As ListBox)
|10| With prmObject
|11| .Items.Add("รักเธอหมดหัวใจ")
|12| .Items.Add("หลักฐานบนใบหน้า")
|13| End With
|14| End Sub
|15| '---------------------------------
|16| Public Overloads Sub addMusic(prmObject
As ComboBox)
|17| With prmObject
|18| .Items.Add("รักเธอหมดหัวใจ")
|19| .Items.Add("หลักฐานบนใบหน้า")
|20| End With
|21| End Sub
|22| End Class
(3) กลับไปที่ฟอร์มแล้วสร้างออบเจ็กต์เพื่อเรียกเมธอดแบบโอเวอร์โหลด
จากนั้นเขียนโค้ดให้เสร็จดังนี้
ในบรรทัดที่
4 ขณะที่เปิดวงเล็บสังเกตจะมีแถบตัวช่วยสีเหลืองขึ้นมา
ซึ่งสามารถเลือกสามเหลี่ยมชี้ขึ้นหรือชี้ลง เพื่อเลือกรายการเมธอดแบบโอเวอร์โหลด
(4) เมื่อรันโปรแกรมในขณะที่ฟอร์มโหลดจากโค้ดจะมีการกระทำ
3 อย่างคือ
บรรทัดที่ 4 จะเพิ่มรายการเพลงลงใน Combobox1
บรรทัดที่ 5 จะเพิ่มรายการเพลงลงใน Listbox1
บรรทัดที่ 6
จะแสดงรายการเพลงที่กล่องข้อความ (Messagebox)
ทั้ง sub statement และ ฟังชั่น สามารถใช้การ overloads กับ overrides ได้ ทั้งคู่ใช้มั้ยครับ
ตอบลบหรือการ overrides ใช้กับฟังชั้น
overloads ใช้กับ sub statement
หรือการ overrides เป็นการเขียนทับ method ชื่อเดียวกับคลาสแม่ในคลาสลูก
ตอบลบส่วน overloads เป็นการทำให้ method ในคลาสนั้นสามารถรับตัวแปรเข้ามาในพารามิเตอร์ได้หลายชนิดในชื่อ method เดียวกันแล้วยังสามารถส่งกลับการกระทำที่ต่างกันตามชนิดของตัวแปรที่รับมาใช่ไหมครับ