การส่งผ่าน Arguments จะมีอยู่
2 ลักษณะ คือ
1. การส่งผ่านด้วยค่าของ Arguments (Pass by value)
วิธีของ Pass by value นี้จะเป็นการส่งตัวแปร ค่าคงที่ต่างๆ (Arguments)โดยใช้การกำหนดค่าแบบ
copy by value ให้กับพารามิเตอร์ที่มารองรับเลย
2. การส่งผ่านด้วยการอ้างอิง Arguments (Pass by reference)
วิธีของ Pass by reference นี้จะต้องเป็นการส่งตัวแปรเท่าันั้นห้ามเป็นค่าคงที่
จะเป็นการส่งค่า address ของ Arguments โดยใช้การกำหนดค่าแบบ copy by reference
ให้กับพารามิเตอร์ที่มารองรับ แต่ในภาษา Java นี้เราจะเป็นการส่ง object หรือเรียกอีกอย่างว่า
instances ของคลาสเหล่านี้จะถูกส่งแบบ Pass by reference ทั้งสิ้น
ลองมาดูตัวอย่างของการส่งทั้ง 2 แบบกันเลยนะครับ
1. การส่งผ่านด้วยค่าของ Arguments (Pass by value)
อธิบายโปรแกรม
โปรแกรมนี้จะมี 2 class นะครับคือ TestPass1 กับ Circle ซึ่งคลาส Circle จะทำหน้าที่ในการเซตค่ารัศมี
ของวงกลมและมีการคำนวณหาพื้นที่วงกลมด้วย ตัวอย่างนี้เป็นตัวอย่างเก่านะครับจากบทความคราวที่แล้วผมจะไม่ขออธิบาย
รายละเอียดอื่นๆ แล้วนะครับ ให้ดูประเด็นหลักๆ คือบรรทัดที่
7 มีการส่งค่าของ Arguments 2 ค่า คือ ค่าของรัศมี myCircle.getRadius( ) และพื้นที่
myCircle.findArea( ) ไปให้พารามิเตอร์ที่อยู่ใน Metohd printCircle แบบนี้แหละคับคือการ
Pass by value
2. การส่งผ่านด้วยการอ้างอิง Arguments (Pass by
reference)
อธิบายโปรแกรม
จากโปรแกรมผมจะเปลี่ยนวิธีการส่งพารามิเตอร์เป็นแบบ Pass by reference นะครับโดยเปลี่ยนการประกาศ
รับพารามิเเตอร์ที่ printCircle เป็นแบบ object ซึ่งก็คือประกาศตัวแปร c จากคลาส
Circle และส่ง Arguments ชื่อ myCircle ที่ประกาศใน main มาให้ตัวแปร c การกระทำแบบนี้จะเป็นการส่งค่า
address ของ object หรือ instances ของ myCircle ไปให้กับ c นั้นเองทำให้ c สามารถเรียกใช้
Method ต่างๆ ที่อยู่ในคลาส Circle ได้ทันที คำตอบของตัวอย่างทั้ง 2 เหมือนกันนะครับ
แต่ต่างกันที่วิธีการครับ