ความแตกต่างระหว่างคลาสและวัตถุใน OOP
ความแตกต่างที่สำคัญระหว่างคลาสและวัตถุ
- คลาสคือเทมเพลตสำหรับสร้างวัตถุในโปรแกรม ในขณะที่วัตถุนั้นเป็นอินสแตนซ์ของคลาส
- คลาสเป็นเอนทิตีเชิงตรรกะ ในขณะที่วัตถุเป็นเอนทิตีทางกายภาพ
- คลาสไม่ได้จัดสรรพื้นที่หน่วยความจำ ในทางกลับกัน วัตถุจะจัดสรรพื้นที่หน่วยความจำ
- คุณสามารถประกาศคลาสได้เพียงครั้งเดียว แต่คุณสามารถสร้างออบเจ็กต์ได้มากกว่าหนึ่งรายการโดยใช้คลาส
- ไม่สามารถจัดการคลาสได้ ในขณะที่วัตถุสามารถจัดการได้
- คลาสไม่มีค่าใด ๆ ในขณะที่วัตถุมีค่าของตัวเอง
- คุณสามารถสร้างคลาสโดยใช้คีย์เวิร์ด "class" ในขณะที่คุณสามารถสร้างออบเจ็กต์โดยใช้คีย์เวิร์ด "ใหม่" ได้ Java.
คลาสคืออะไร?
คลาสคือเอนทิตีที่กำหนดว่าวัตถุจะทำงานอย่างไรและวัตถุนั้นจะมีอะไรบ้าง กล่าวอีกนัยหนึ่ง มันเป็นพิมพ์เขียวหรือชุดคำสั่งในการสร้างวัตถุประเภทเฉพาะ โดยให้ค่าเริ่มต้นสำหรับตัวแปรสมาชิกและฟังก์ชันหรือเมธอดของสมาชิก
วัตถุคืออะไร?
วัตถุนั้นไม่มีอะไรนอกจากองค์ประกอบที่มีอยู่ในตัวเองที่ประกอบด้วยวิธีการและคุณสมบัติเพื่อทำให้ข้อมูลมีประโยชน์ ช่วยให้คุณกำหนดพฤติกรรมของชั้นเรียนได้
ตัวอย่างเช่น เมื่อคุณส่งข้อความไปยังวัตถุ คุณกำลังขอให้วัตถุเรียกใช้หรือดำเนินการหนึ่งในวิธีการของมัน
จากมุมมองการเขียนโปรแกรม อ็อบเจ็กต์อาจเป็นโครงสร้างข้อมูล ตัวแปร หรือฟังก์ชันที่ได้รับการจัดสรรตำแหน่งหน่วยความจำ อ็อบเจ็กต์ได้รับการออกแบบเป็นลำดับชั้นของคลาส
คลาสกับวัตถุ - ความแตกต่างระหว่างพวกเขา
นี่คือข้อแตกต่างที่สำคัญระหว่างคลาสและอ็อบเจ็กต์:
ชั้น | วัตถุ |
---|---|
คลาสคือเทมเพลตสำหรับสร้างวัตถุในโปรแกรม | วัตถุเป็นตัวอย่างของชั้นเรียน |
คลาสเป็นเอนทิตีเชิงตรรกะ | วัตถุเป็นเอนทิตีทางกายภาพ |
คลาสไม่ได้จัดสรรพื้นที่หน่วยความจำเมื่อถูกสร้างขึ้น | วัตถุจัดสรรพื้นที่หน่วยความจำทุกครั้งที่ถูกสร้างขึ้น |
คุณสามารถประกาศคลาสได้เพียงครั้งเดียวเท่านั้น | คุณสามารถสร้างวัตถุได้มากกว่าหนึ่งวัตถุโดยใช้คลาส |
ตัวอย่าง: รถยนต์. | ตัวอย่าง: จากัวร์, BMW, เทสลา ฯลฯ |
คลาสสร้างวัตถุ | วัตถุให้ชีวิตแก่ชั้นเรียน |
ไม่สามารถจัดการคลาสได้เนื่องจากไม่มีอยู่ในหน่วยความจำ | พวกเขาสามารถจัดการได้ |
ไม่มีค่าใด ๆ ที่เกี่ยวข้องกับฟิลด์ | แต่ละออบเจ็กต์มีค่าของตัวเองซึ่งเชื่อมโยงกับฟิลด์ต่างๆ |
คุณสามารถสร้างคลาสโดยใช้คีย์เวิร์ด "class" | คุณสามารถสร้างวัตถุโดยใช้คำหลัก "ใหม่" ได้ Java |
เข้าใจแนวคิดของ Java คลาสและออบเจ็กต์พร้อมตัวอย่าง
มาดูตัวอย่างการพัฒนาระบบการจัดการสัตว์เลี้ยงสำหรับสุนัขโดยเฉพาะ คุณจะต้องมีข้อมูลต่างๆ เกี่ยวกับสุนัข เช่น สุนัขพันธุ์ต่างๆ อายุ ขนาด ฯลฯ
คุณต้องจำลองสิ่งมีชีวิตในชีวิตจริง เช่น สุนัข ให้กลายเป็นซอฟต์แวร์
ยิ่งไปกว่านั้น คำถามล้านดอลลาร์ก็คือ คุณจะออกแบบซอฟต์แวร์ดังกล่าวอย่างไร นี่คือวิธีแก้ปัญหา -
ก่อนอื่นเรามาออกกำลังกายกันก่อน
คุณสามารถเห็นภาพสุนัขสามสายพันธุ์ที่แตกต่างกันด้านล่าง
หยุดที่นี่เดี๋ยวนี้! แสดงรายการความแตกต่างระหว่างพวกเขา
ความแตกต่างบางประการที่คุณอาจระบุไว้อาจเป็นสายพันธุ์ อายุ ขนาด สี ฯลฯ หากคุณลองคิดดูสักครู่ ความแตกต่างเหล่านี้ก็เป็นลักษณะทั่วไปของสุนัขเหล่านี้เช่นกัน ลักษณะเหล่านี้ (สายพันธุ์ อายุ ขนาด สี) สามารถสร้างสมาชิกข้อมูลสำหรับออบเจ็กต์ของคุณได้
ต่อไป แสดงรายการพฤติกรรมทั่วไปของสุนัขเหล่านี้ เช่น นอน นั่ง กิน ฯลฯ ดังนั้นสิ่งเหล่านี้จะเป็นการกระทำของออบเจ็กต์ซอฟต์แวร์ของเรา
จนถึงขณะนี้เราได้กำหนดสิ่งต่างๆ ดังต่อไปนี้
- ชั้น: สุนัข
- สมาชิกข้อมูล or วัตถุ: ขนาด อายุ สี พันธุ์ ฯลฯ
- วิธีการ: กิน นอน นั่งวิ่ง
ตอนนี้สำหรับค่าต่างๆ ของสมาชิกข้อมูล (ขนาดพันธุ์ อายุ และสี) Java คลาสคุณจะได้รับสิ่งของสุนัขที่แตกต่างกัน
คุณสามารถออกแบบโปรแกรมใดก็ได้โดยใช้แนวทาง OOP นี้
คลาสและออบเจ็กต์ใน Java
ในโปรแกรมด้านล่าง เราได้ประกาศคลาสที่เรียกว่า Dog เราได้กำหนดวัตถุของคลาสที่เรียกว่า “มอลตา” โดยใช้คำหลักใหม่ ในคำสั่งสุดท้าย System.out.println(maltese.getInfo()); เรากำลังแสดงข้อมูลสุนัข เช่น พันธุ์ ขนาด อายุ สี ฯลฯ
// Class Declaration class Dog { // Instance Variables String breed; String size; int age; String color; // method 1 public String getInfo() { return ("Breed is: "+breed+" Size is:"+size+" Age is:"+age+" color is: "+color); } } public class Execute{ public static void main(String[] args) { Dog maltese = new Dog(); maltese.breed="Maltese"; maltese.size="Small"; maltese.age=2; maltese.color="white"; System.out.println(maltese.getInfo()); } }
Output:
สายพันธุ์คือ: มอลทีส ขนาด: เล็ก อายุ:2 สีคือ: สีขาว
ประเภทของชั้นเรียน
ต่อไปนี้เป็นประเภทของคลาสที่สำคัญ:
คลาสที่ได้รับและการสืบทอด
คลาสที่ได้รับคือคลาสที่สร้างขึ้นหรือได้มาจากคลาสการขุดอื่น ใช้เพื่อเพิ่มฟังก์ชันการทำงานของคลาสพื้นฐาน คลาสประเภทนี้ได้มาและสืบทอดคุณสมบัติจากคลาสที่มีอยู่ นอกจากนี้ยังสามารถเพิ่มหรือแชร์/ขยายคุณสมบัติของตนเองได้
ซูเปอร์คลาส:
ซูเปอร์คลาสคือคลาสที่คุณสามารถรับคลาสย่อยจำนวนมากได้
คลาสย่อย:
คลาสย่อยคือคลาสที่ได้มาจากซูเปอร์คลาส
ชั้นเรียนผสม
คลาสผสมเป็นอีกฟังก์ชันหนึ่งที่ช่วยให้คุณสืบทอดคุณสมบัติของคลาสหนึ่งไปยังอีกคลาสหนึ่งได้ โดยจะใช้ชุดย่อยของฟังก์ชันการทำงานของคลาส ในขณะที่คลาสที่ได้รับใช้ชุดฟังก์ชันการทำงานของซูเปอร์คลาสที่สมบูรณ์
การใช้คลาส
ต่อไปนี้เป็นการใช้งานที่สำคัญของคลาส:
- คลาสใช้เพื่อเก็บทั้งตัวแปรข้อมูลและฟังก์ชันสมาชิก
- ช่วยให้คุณสร้างวัตถุกำหนดผู้ใช้
- ชั้นเรียนจัดให้มีวิธีการจัดระเบียบข้อมูลเกี่ยวกับข้อมูล
- คุณสามารถใช้คลาสเพื่อสืบทอดคุณสมบัติของคลาสอื่นได้
- คลาสสามารถใช้เพื่อใช้ประโยชน์จาก Constructor หรือ Destructor
- สามารถใช้งานได้กับข้อมูลจำนวนมากและแอพพลิเคชันที่ซับซ้อน
การใช้วัตถุ
ต่อไปนี้เป็นการใช้งานที่สำคัญของวัตถุ
- ช่วยให้คุณทราบประเภทของข้อความที่ยอมรับและประเภทของการตอบกลับ
- คุณสามารถใช้วัตถุเพื่อเข้าถึงชิ้นส่วนของหน่วยความจำโดยใช้ตัวแปรอ้างอิงวัตถุ
- มันถูกใช้เพื่อจัดการข้อมูล
- ออบเจ็กต์แสดงถึงปัญหาในโลกแห่งความเป็นจริงที่คุณกำลังค้นหาวิธีแก้ไข
- ช่วยให้สมาชิกข้อมูลและฟังก์ชันสมาชิกสามารถทำงานที่ต้องการได้