Polymorphism

ในบทเรียน คุณจะได้เรียนรู้เกี่ยวกับคุณสมบัติ Polymorphism ในภาษา Java

Polymorphism คืออะไร

Polymorphism คือการที่ออบเจ็คสามารถมีได้หลายรูปแบบ ซึ่งเกิดจากการสืบทอดจาก super class และมันยังคงรักษาสภาพและคุณสมบัติของ super class ไว้ เช่น ผู้คนในโลก จะมีทั้งนักกีฬา นักร้อง นักดนตรี ซึ่งมันก็คือการมีหลายรูปแบบทางอาชีพของบุคคล ซึ่งเราสามารถใช้คำว่า บุคคล ในการอ้างถึงคนในอาชีพต่างๆ ได้ ซึ่งเป็นแนวคิดของ polymorphism ในการเขียนโปรแกรม ซึ่งมันความหมายของมันคือการมีได้หลายรูปแบบ

ต่อไปเป็นตัวอย่างของการใช้งานคุณสมบัติ polymorphism ในภาษา Java โดยเราจะมีคลาส Person สำหรับเป็น super class และสร้างคลาสอื่นเพื่อสืบทอดจากคลาสนี้

public class TestPolymorphism {
public static void main (String[] args) {
Person person1, person2, person3;
person1 = new Person("Mark", 1980);
person2 = new Sheriff("Mateo", 1981, "California");
person3 = new Police("Danny", 1986, "NYC");

person1.introduce();
person2.introduce();
person3.introduce();
}
}

class Person {
String name;
int bornYear;

public Person (String name, int bornYear) {
this.name = name;
this.bornYear = bornYear;
}

public void introduce () {
System.out.print("My name is " + name + ",");
System.out.println(" I was born in " + bornYear + ".");
}
}

class Sheriff extends Person {
String workState;

public Sheriff (String name, int bornYear, String workState) {
super(name, bornYear);
this.workState = workState;
}

public void introduce () {
super.introduce();
System.out.println("I'm a sheriff and work in " + workState + ".");
}
}

class Police extends Person {
String workCountry;

public Police (String name, int bornYear, String workCountry) {
super(name, bornYear);
this.workCountry = workCountry;
}

public void introduce () {
super.introduce();
System.out.println("I'm a police and work in " + workCountry + ".");
}
}

ในตัวอย่าง นั้นเรามีคลาส Person ที่เป็น super class เราได้สร้าง delivered class มาสองคลาสคือ Sheriff และ Police นั่นคือเป็นคลาสที่สืบทอดคุณสมบัติของตัวแปรและเมธอดมาจากคลาส Person

ใน delivered class ทั้งสอง เราได้ทำการ override เมธอด introduce เพื่อแสดงข้อมูลเพิ่มเติม และต่อไปเป็นการใช้งานคุณสมบัติของ polymorphism ในจากโค้ด

Person person1, person2, person3;
person1 = new Person("Mark", 1980);
person2 = new Sheriff("Mateo", 1981, "California");
person3 = new Police("Danny", 1986, "NYC");

ในตอนนี้ เราได้ใช้คลาส Person ในการประกาศออบเจ็ค (instances) มา 3 ตัวแปร และเราใช้ instances ของคลาสนี้ในการสร้างออบเจ็คจากคลาสต่างๆ ซึ่งก็คือ Person, Sheriff และ Police นั่นหมายความว่า ตัวแปรที่สร้างจากคลาส Person นั้นมีได้หลายรูปแบบ ในตัวอย่างนั้นมี 3 แบบด้วยกัน

person1.introduce();
person2.introduce();
person3.introduce();

ต่อมาเป็นการเรียกใช้งานเมธอด introduce ของแต่ละออบเจ็คซึ่งสร้างมาจากคลาสที่แตกต่างกัน สำหรับ delivered class นั้นเมธอด introduce ถูกทำการ override เพื่อให้แสดงข้อมูลเพิ่มเติม

ข้อได้เปรียบของ polymorphism คือการที่สามารถจัดการกับออบเจ็คที่สืบทอดมาจากคลาสเดียวกันได้ โดยใช้ super class ของมันในการประกาศออบเจ็ค

My name is Mark, I was born in 1980.
My name is Mateo, I was born in 1981.
I'm a sheriff and work in California.
My name is Danny, I was born in 1986.
I'm a police and work in NYC.

และนี่เป็นผลลัพธ์ของโปรแกรม

Warning: ในการใช้ instances ที่สร้างจาก super class สามารถใช้ได้กับตัวแปรหรือเมธอดที่มีอยู่ใน super class หรือที่ได้รับการ override เท่านั้น ยกตัวอย่างเช่น ถ้าคุณสร้างเมธอดหรือตัวแปรใหม่ใน delivered class คุณไม่สามารถใช้มันได้ผ่าน instance ของ super class ได้ เราจะพูดเกี่ยวกับเรื่องนี้ในเรื่อง interface และ abstract class

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับ polymorphism ในภาษา Java ซึ่งเราสามารถจัดการกับออบเจ็คต่างประเภทกัน โดยใช้ instances จาก super class ของมันได้


บทความเกี่ยวกับ Polymorphism

Polymorphism ในภาษา C#

ในบทนี้คุณจะได้รู้จักกับคุณสมบัติ Polymorphism ในภาษา C# ซึ่งมันเป็นคุณสมบัติที่สำคัญอย่างหนึ่งในการเขียนโปรแกรมเชิงวัตถุที่รองลงมาจาก Inheritance และ Encapsula...

Polymorphism ในภาษา Visual Basic

Polymorphism เป็นคุณสมบัติที่สำคัญเป็นอันดับที่สามในการเขียนโปรแกรมเชิงวัตถุ ต่อจากคุณสมบัติการห่อหุ่มและการสืบทอด คำว่า Polymorphism นั้นเป็นคำศัพท์ที่มาจากภาษ...

Polymorphism ในภาษา PHP

ในการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming) Polymorphism เป็นคุณสมบัติพื้นฐานที่สำคัญในการแอพพลิชันให้มีความหลากหลายในการใช้งาน โดยการแชร์รูปแบบกา...