General

เข้าใจ Abstract Class และ Interface Class ของ Java

ขณะพยายามทำความเข้าใจ Object Oriented ก็อ่านไปเจอเรื่อง Abstract class และ Interface class เข้าพอดี .. search เจอใน Narisa.com ตอบคำถามโดยคุณ “ข้าวโพดหวาน” ซึ่งอธิบายได้ง่ายต่อการเข้าใจ จึงขอ Cut/Parse มาไว้ที่นี้ด้วย (ขอบคุณครับ) 

abstract class มีไว้ในการทำ reuse สำหรับคลาสหลายๆตัวที่สืบทอดมาจาก super class เดียวกัน แต่เราไม่ต้องการให้ใคร instantiate super class ได้ เลยกำหนด super class เป็น abstract ไว้ครับ เรื่องนี้อยู่ในหัวข้อของ inhertiance ครับ คลาสทั้งหลายที่มีคุณสมบัติคล้ายๆกันพอมารวมกลุ่มโดยมี super class ร่วมกัน จะกลายเป็น class hierarchy ครับ

ส่วนเรื่อง interface คือการนิยามเมดธอดที่คลาสต้อง Implement ประโยชน์ส่วนหนึ่งก็คือใช้ interface เพื่อช่วย implement multiple inheritance ให้กับภาษาที่ไม่สนับสนุน multiple inhertiance อย่างเช่นจาวาครับ อีกประโยชน์ก็คือ เมื่อหลายๆคลาส implement interface เดียวกัน เราก็จะสามารถอ้างถึงออปเจกจากคลาสเหล่านั้นด้วยชนิดของ interface ได้ อย่างเช่น

interface X { 
  public void methodX();
}
class A implements X { ... }
class B impelemtns X { ... }

เวลาอ้างถึงออปเจกจากที่สร้างจากคลาส A หรือ B สามารถอ้างโดยใช้ตัวแปรที่เป็นชนิด X ได้ เช่น

A a = new A();
B b = new B();
X x = a;
x.methodX();
x = b;
x.methodX();

เห็นว่าตัวแปร x สามารถชี้ไปที่ออปเจก a หรือ b ที่สร้างมาจากคนละคลาสได้

สำหรับตัวอย่างที่คุณให้มา ไม่มีคลาสที่มีคุณสมบัติเหมือนกัน ไม่มี class hierarchy คงเอาเรื่อง abstract class หรือ interface มาประยุกต์ใช้ไม่ได้ครับ

Advertisements
มาตรฐาน

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s