สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial JAVA

01 install Eclipse 02 intro to programming Eclipse 03 condition 04.loop 05.array 05 2 array cont 06 01 function 06 02 function cont 07 object 08 string 09 constructor 10 01 oop 10 02 oop2 11 exception 12 reading file 13 thread 14 generic 15 01 GUI 15 02 GUI2 15 03.GUI3 16 using WindowBuilder 17 event 18 database management system 19 ER diagram 20 Relational 21 Xampp 22 JDBC 23 MVC 24 SQL

การเขียนโปรแกรมเชิงวัตถุ

Object Oriented Programming (OOP)

            เมื่ออ่านเรื่องคลาสและอ็อปเจ็คแล้ว สิ่งที่จะพิจารณาต่อไปคือเรื่องของการเขียนโปรแกรมเชิงวัตถุซึ่งเป็นจุดเด่นของการเขียนโปรแกรมในภาษาจาวา ประกอบไปด้วย Encapsulation, Inheritance และPolymorphism

Encapsulation การห่อหุ้มข้อมูล

 คือการปกปิดข้อมูลหรือเมท็อดบางอย่างไม่ให้ภายนอกมองเห็นและเปลี่ยนแปลงได้(อ่านเพิ่มเติมจากเรื่อง อ็อปเจ็ค)

Inheritance การสืบทอดคุณสมบัติ

ช่วยในการประหยัดเวลาสำหรับการเขียนโปรแกรม คือสามารถที่จะสร้างคลาสใหม่โดยสืบทอดคุณสมบัติจากคลาสเก่าได้โดยไม่ต้องเขียนอะไรให้ยุ่งยากใหม่ทั้งหมด นอกจากนี้ยังสามารถปรับเปลี่ยนลักษณะบางประการของจากคลาสที่ไปสืบทอดคุณสมบัติมาได้ด้วยเรียกว่า overriding

ปกติถ้าไม่ใช้การสืบทอดคุณสมบัติเวลาเขียนคลาสใหม่ก็จะต้องไปก็อปปี้คลาสเดิมแล้วมาสร้างคลาสใหม่เวลาเกิด error ก็ต้องนั่งแก้ทุกจุดทำให้ลำบาก แบบเขียนยาวแล้วแก้ยาก แต่ถ้าสืบทอดคุณสมบัติมาก็แก้แค่จุดเดียวเป็นต้น

คลาสแม่และคลาสลูก(superclass and subclass)

คลาสลูกคือคลาสที่ไปสืบทอดคุณสมบัติมาจากคลาสอื่น ส่วนคลาสที่ถูกเขาสืบทอดคุณสมบัติไปเรียกว่าคลาสแม่ เช่น คลาส B สืบทอดคุณสมบัติจากคลาส A คลาสจะเป็นคลาสแม่ ส่วนคลาส B จะเป็นคลาสลูก วิธีการสืบทอดคุณสมบัติจะใช้คีย์เวิร์ด extends

Modifier cass ชื่อคลาสลูก extends ชื่อคลาสแม่{ }

           

            เมื่อมีการสืบทอดคุณสมบัติแล้วมีการเปลี่ยนแปลงเกิดขึ้นกับคลาสแม่ ผลของการเปลี่ยนแปลงจะส่งมาที่คลาสลูกอัตโนมัติ สิ่งที่คลาสแม่สามารถสืบทอดคุณสมบัติไปให้คลาสลูกได้ ได้แก่ ตัวแปรคลาสแม่และเมท็อดภายใน คือเมื่อคลาสลูกสืบทอดคุณสมบัติไปแล้วจะสามารถเรียกใช้ตัวแปรและเมท็อดจากคลาสแม่ได้เหมือนกับคลาสลูกสร้างมันขึ้นมาเอง แต่อย่างไรก็ตามถ้าคลาสแม่มีสิ่งที่ถูกประกาศเป็น private ในคลาสแม่ สิ่งนั้นจะไม่สามารถถ่ายทอดมายังลูกได้ และอีกประการคือคอนสตรัคเตอร์ก็จะไม่ถ่ายทอดมายังลูก เปรียบเหมือนแม่มีคุณสมบัติสูง 170 แต่คุณสมบัติไม่จำเป็นต้องเป็นของลูก ลูกอาจสูง 180 ก็ได้

การสืบทอดคุณสมบัติบางครั้งก็ต้องมีการเปลี่ยนแปลงแก้ไข เช่น การเพิ่มตัวแปรและเมท็อดอื่นๆในคลาสลูกเพิ่มเติม

 


รูป10-1

            กลับมีที่คลาส Box อีกครั้ง ในคลาสนี้ปรกาศตัวแปร width, height, depth และสร้างคอนสตรัคเตอร์ 2 คอนสตรัคเตอร์ คือ default constructor กับคอนสตรัคเตอร์แบบรับพารามิเตอร์ จากนั้นก็สร้างเมท็อดสำหรับคำนวณ

 


รูป10-2

            สร้างคลาส BoxWeight โดยให้คลาส BoxWeight สืบทอดคุณสมบัติมาจากคลาส Box ด้วยคีย์เวิร์ด extends ในบรรทัดที่ 2

บรรทัดที่ 4 : ประกาศตัวแปร weight เพื่อเก็บค่าน้ำหนักของกล่อง

บรรทัดที่ 6 : สร้างคอนสตรัคเตอร์ของคลาส BoxWeight จะเห็นว่าในคอนสตรัคเตอร์ของ BoxWeight( ) มีตัว

แปร width, height, depth แบบเดียวกับคลาส Box โดยที่ไม่ต้องประกาศตัวแปร เพราะ BoxWeight( ) ได้ทำการสืบทอดคุณสมบัติมาจาก Box ดังนั้น ตัวแปรคลาสและเมท็อด volume ของ Box นั้น BoxWeight( )ก็จะสามารถใช้งานได้

บรรทัดที่ 8 : ถ้าไม่สร้าง default constructor ในบรรทัดที่ 7 ของคลาส Box จะต้องใส่พารามิเตอร์ในคีย์เวิร์ด

super ตรงนี้แทน ไม่อย่างนั้นจะ error

 


รูป10-3

บรรทัดที่ 6-7 : new อ็อปเจ็คจากคลาส BoxWeight

บรรทัดที่ 10 : เรียกเมท็อด volume ที่เรียกได้ก็เพราะ BoxWeight สืบทอดเมท็อดนี้มาแล้ว

บรรทัดที่ 12 : เรียกตัวแปร weight ของ BoxWeight มาแสดงผล

ผลลัพธ์

 


รูป10-4

Overriding

คือการแก้ไขเมท็อดที่สืบทอดมาจากคลาสแม่ หรือก็คือการเปลี่ยนแปลงเพิ่มเติมตัวแปรและเมท็อดบางอย่างจากคลาสแม่ แต่เมท็อดนั้นต้องชื่อเหมือนกันและรับพารามิเตอร์เหมือนกัน

 


รูป10-5

สร้างคลาสชื่อ Overriding ประกาศตัวแปร a กับ b จากนั้นสร้างคอนสตรัคเตอร์รับพารามิเตอร์ 2 ตัวจากนั้นเก็บค่าไว้ในตัวแปร a b

สร้างเมท็อดชื่อ print สำหรับแสดงค่าออกทางหน้าจอ

 


รูป10-6

สร้างคลาสชื่อ Overriding2 ให้สืบคุณสมบัติมาจาก คลาส Overriding ด้วยคีย์เวิร์ด extends จากนั้นสร้างตัวแปรของคลาส Overriding2 ให้ชื่อ c

ในคอนสตรัคเตอร์ของ Overriding2 เพิ่ม c ลงไป

บรรทัดที่ 10 : นี่คือการ Override คือให้เมท็อดชื่อเหมือนเดิมแต่เปลี่ยนคำสั่งข้างใน จากคลาส Overriding ให้

แสดงค่า a และ b ออกทางหน้าจอ แต่เมท็อดที่สืบทอดคุณสมบัติมาในคลาส Overriding2 ให้แสดงค่า c

 


รูป10-7

บรรทัดที่ 8 : เรียกเมท็อด print( ) จากคลาส Overriding2 โปรแกรมจะแสดง ผลลัพธ์ว่า c : 15 เพราะในคลาส

Overriding2เป็นเมท็อดที่ได้รับการ override แล้ว

Polymorphism การพ้องรูป

สำหรับการพ้องรูปเป้นเรื่องที่มีความเกี่ยวเนื่องกันกับการสืบทอดคุณสมบัติอย่างแยกไม่ออก แปลตามตัวอักษร poly หลาย morph รูปร่าง คือการที่หนึ่งอ็อปเจ็คสามารถมีหน้าที่ได้หลายบทบาท เวลาที่สร้างคลาสแม่ลูกขึ้นมา คลาสแม่จะถือว่าเป็นอะไรที่ใหญ่กว่าคลาสลูก คลาสแม่จะเป็นกรณีทั่วไปแต่คลาสลูกจะเป็นกรณีพิเศษ เช่น คลาสแม่เป็นดอกไม้ มีคุณสมสมบัติคือมีกลีบดอก มีสี คลาสลูกเป็นคลาสดอกมะลิก็จะมีกลีบ มีสีที่เฉพาะเจาะจงกว่าพูดว่าดอกไม้ ดังนั้นสามารถใช้ตัวแปรอ้างอิงของแม่ไปอ้างอิงลูกได้ เช่น Flower f = new Jasmine(); เหมือนบอกว่า ให้คลาส Flower เก็บดอกไม้ สามารถเก็บดอกมะลิได้ แต่ Jasmine j = new Flower(); ไม่ได้ เพราะบอกให้เก็บดอกมะลิ ไม่ใช่ว่าจะไปเก็บดอกไม้อะไรมาให้ก็ได้

 


รูป 10-8

 


รูป10-9

            จากตัวอย่างรูป 10-9 นี้จะเห็นว่าคลาส Rect สืบทอดคุณสมบัติมาจาก Ball แต่ในรูป 10-8 ประกาศอ็อปเจ็ค balls ของ Ball ขึ้นมาเพียงอันเดียว พอจะ new อ็อปเจ็คของคลาส Rect ขึ้นมา ก็สามารถใช้ตัวอ้างอิง ball ไป new ได้เลยเพราะ Rect  เป็นลูกของ Ball



บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา