หน้าแรก
หน้าแรก
Polymorphism คือความสามารถของวัตถุในหลายรูปแบบ การใช้พหุสัณฐานที่พบบ่อยที่สุดใน OOP เกิดขึ้นเมื่อการอ้างอิงคลาสพาเรนต์ใช้เพื่ออ้างถึงอ็อบเจ็กต์คลาสย่อย ออบเจ็กต์ Java ใดๆ ที่สามารถผ่านการทดสอบ IS-A ได้มากกว่าหนึ่งรายการจะถือว่าเป็นแบบพหุมอร์ฟิค ใน Java ออบเจ็กต์ Java ทั้งหมดเป็นแบบโพลีมอร์ฟิค เนื่อ
ใช่ วิธีสุดท้ายได้รับการสืบทอดแต่ไม่สามารถแทนที่ได้
การแทนที่เมธอดเป็นตัวอย่างของความแตกต่างระหว่างรันไทม์ ในการแทนที่เมธอด คลาสย่อยจะแทนที่เมธอดที่มีลายเซ็นเดียวกันกับในซูเปอร์คลาส ในช่วงเวลารวบรวม จะมีการตรวจสอบประเภทอ้างอิง อย่างไรก็ตาม ในรันไทม์ JVM จะคำนวณประเภทอ็อบเจ็กต์และจะรันเมธอดที่เป็นของอ็อบเจกต์นั้น ตัวอย่าง ดูตัวอย่างด้านล่างเพื่อทำความ
การแทนที่เมธอดเป็นตัวอย่างของความแตกต่างระหว่างรันไทม์ ในการแทนที่เมธอด คลาสย่อยจะแทนที่เมธอดที่มีลายเซ็นเดียวกันกับในซูเปอร์คลาส ในช่วงเวลารวบรวม จะมีการตรวจสอบประเภทอ้างอิง อย่างไรก็ตาม ในรันไทม์ JVM จะคำนวณประเภทอ็อบเจ็กต์และจะรันเมธอดที่เป็นของอ็อบเจกต์นั้น เราสามารถแทนที่เมธอดที่ระดับของการสืบท
ใช่! เมื่อคอมไพเลอร์รู้ว่าอ็อบเจกต์ใดที่จะใช้สำหรับการดำเนินการเมธอด คอมไพเลอร์สามารถผูกการอ้างอิงกับอ็อบเจ็กต์แบบคงที่ได้ ตัวอย่างเช่น ตัวแปรสแตติก ตัวแปรไพรเวต ตัวแปรสุดท้ายกำลังใช้การรวมแบบคงที่ ในขณะที่การระบุอ็อบเจ็กต์ต้องทำที่รันไทม์ การโยงไดนามิกจะถูกใช้ การแทนที่เมธอดเป็นกรณีของการเชื่อมโยงแ
ใช่ ตัวแปรสามารถดาวน์คาสต์ไปที่ช่วงล่างแทนได้ด้วยการแคสต์ มันอาจทำให้ข้อมูลสูญหายแม้ว่า ดูตัวอย่างด้านล่าง − ตัวอย่าง public class Tester { public static void main(String[] args) { int a = 300; byte b = (byte)a; System.out.p
ตัวดำเนินการนี้ใช้สำหรับตัวแปรอ้างอิงวัตถุเท่านั้น โอเปอเรเตอร์ตรวจสอบว่าอ็อบเจ็กต์นั้นเป็นประเภทใดประเภทหนึ่ง (ประเภทคลาสหรือประเภทอินเตอร์เฟส) ตัวดำเนินการ instanceof เขียนเป็น − ( Object reference variable ) instanceof (class/interface type) หากวัตถุที่อ้างอิงโดยตัวแปรทางด้านซ้ายของตัวดำเนินการผ่
คลาสที่มีคำสำคัญที่เป็นนามธรรมในการประกาศนั้นเรียกว่าคลาสนามธรรม คลาสนามธรรมอาจมีหรือไม่มีวิธีการที่เป็นนามธรรม เช่น เมธอดที่ไม่มีเนื้อหา ( public void get(); ) แต่หากคลาสมีเมธอดนามธรรมอย่างน้อยหนึ่งเมธอด คลาสนั้นจะต้องได้รับการประกาศให้เป็นนามธรรม หากคลาสถูกประกาศให้เป็นนามธรรม จะไม่สามารถสร้างอิน
การห่อหุ้ม การห่อหุ้มเป็นหนึ่งในสี่แนวคิด OOP พื้นฐาน อีกสามประการคือการสืบทอด ความหลากหลาย และนามธรรม การห่อหุ้มใน Java เป็นกลไกสำหรับการห่อข้อมูล (ตัวแปร) และโค้ดที่กระทำต่อข้อมูล (เมธอด) เข้าด้วยกันเป็นหน่วยเดียว ในการห่อหุ้ม ตัวแปรของคลาสจะถูกซ่อนจากคลาสอื่นและสามารถเข้าถึงได้ผ่านเมธอดของคลาสปั
ตามพจนานุกรม นามธรรม คือคุณภาพของการจัดการกับความคิดมากกว่าเหตุการณ์ ตัวอย่างเช่น เมื่อคุณพิจารณากรณีของอีเมล รายละเอียดที่ซับซ้อน เช่น จะเกิดอะไรขึ้นทันทีที่คุณส่งอีเมล โปรโตคอลที่เซิร์ฟเวอร์อีเมลของคุณใช้จะถูกซ่อนจากผู้ใช้ ดังนั้น ในการส่งอีเมล คุณเพียงแค่พิมพ์เนื้อหา ระบุที่อยู่ของผู้รับ แล้วคลิก
ใช่ เราสามารถสร้าง abstract method/classes ใน Java ได้ง่ายมาก ตัวอย่าง ในการสร้างคลาสนามธรรม เพียงแค่ใช้คีย์เวิร์ด abstract ก่อนคีย์เวิร์ดของคลาส ในการประกาศคลาส /* File name : Employee.java */ public abstract class Employee { private String name; private String address;
อินเทอร์เฟซเป็นประเภทอ้างอิงใน Java มันคล้ายกับชั้นเรียน เป็นการรวบรวมวิธีการเชิงนามธรรม คลาสใช้อินเตอร์เฟส ดังนั้นจึงสืบทอดเมธอดนามธรรมของอินเตอร์เฟส นอกเหนือจากเมธอดนามธรรมแล้ว อินเตอร์เฟสอาจประกอบด้วยค่าคงที่ เมธอดดีฟอลต์ เมธอดสแตติก และประเภทที่ซ้อนกัน เนื้อหาของเมธอดมีอยู่สำหรับเมธอดเริ่มต้นแล
Java 8 นำเสนอแนวคิดใหม่ของการนำวิธีการเริ่มต้นไปใช้ในอินเทอร์เฟซ ความสามารถนี้ถูกเพิ่มสำหรับความเข้ากันได้แบบย้อนหลัง เพื่อให้สามารถใช้อินเทอร์เฟซเก่าเพื่อใช้ประโยชน์จากความสามารถนิพจน์แลมบ์ดาของ Java 8 ตัวอย่างเช่น อินเทอร์เฟซ List หรือ Collection ไม่มีการประกาศเมธอด forEach ดังนั้นการเพิ่มวิธีการ
คลาสนามธรรมสามารถมีเมธอดของอินสแตนซ์ที่ใช้พฤติกรรมเริ่มต้น อินเทอร์เฟซสามารถประกาศเฉพาะค่าคงที่และเมธอดของอินสแตนซ์ แต่ไม่สามารถใช้พฤติกรรมเริ่มต้นได้ และวิธีการทั้งหมดเป็นนามธรรมโดยปริยาย อินเทอร์เฟซมีสมาชิกสาธารณะทั้งหมดและไม่มีการนำไปใช้
Java 8 นำเสนอแนวคิดใหม่ของการนำวิธีการเริ่มต้นไปใช้ในอินเทอร์เฟซ ความสามารถนี้ถูกเพิ่มสำหรับความเข้ากันได้แบบย้อนหลังเพื่อให้อินเทอร์เฟซเก่าสามารถใช้เพื่อยกระดับความสามารถนิพจน์แลมบ์ดาของ Java 8 ตัวอย่างเช่น อินเทอร์เฟซ List หรือ Collection ไม่มีการประกาศเมธอด forEach ดังนั้นการเพิ่มวิธีการดังกล่า
อินเทอร์เฟซสามารถมีวิธีช่วยเหลือแบบสแตติกตั้งแต่ Java 8 เป็นต้นไป public interface vehicle { default void print() { System.out.println("I am a vehicle!"); } static void blowHorn() { System.out.println("Bl
การใช้งานส่วนต่อขยายที่พบบ่อยที่สุดเกิดขึ้นเมื่ออินเทอร์เฟซหลักไม่มีวิธีการใดๆ ตัวอย่างเช่น อินเทอร์เฟซ MouseListener ในแพ็คเกจ java.awt.event ขยาย java.util.EventListener ซึ่งถูกกำหนดเป็น − ตัวอย่าง package java.util; public interface EventListener {} อินเทอร์เฟซที่ไม่มีเมธอดในอินเทอร์เฟซนั้นเรียก
เราสามารถประกาศอินเทอร์เฟซในอินเทอร์เฟซหรือคลาสอื่นได้ อินเทอร์เฟซดังกล่าวเรียกว่าอินเทอร์เฟซแบบซ้อน ต่อไปนี้คือกฎที่ควบคุมอินเทอร์เฟซที่ซ้อนกัน อินเทอร์เฟซที่ซ้อนกันซึ่งประกาศภายในอินเทอร์เฟซต้องเป็นสาธารณะ อินเทอร์เฟซที่ซ้อนกันที่ประกาศภายในคลาสสามารถมีตัวแก้ไขการเข้าถึงใดก็ได้ อินเทอร์เฟซที่ซ้อน
มีการใช้แพ็คเกจใน Java เพื่อป้องกันความขัดแย้งในการตั้งชื่อ ควบคุมการเข้าถึง ทำให้การค้นหา/ระบุตำแหน่งและการใช้งานคลาส อินเทอร์เฟซ การแจงนับและหมายเหตุประกอบง่ายขึ้น เป็นต้น แพ็คเกจสามารถกำหนดเป็นกลุ่มของประเภทที่เกี่ยวข้อง (คลาส อินเตอร์เฟส การแจงนับ และหมายเหตุประกอบ) ให้การป้องกันการเข้าถึงและการ
ขณะสร้างแพ็คเกจ คุณควรเลือกชื่อสำหรับแพ็คเกจและรวมคำสั่งแพ็คเกจพร้อมกับชื่อนั้นที่ด้านบนสุดของไฟล์ต้นฉบับทุกไฟล์ที่มีคลาส อินเตอร์เฟส การแจงนับ และ ประเภทคำอธิบายประกอบที่คุณต้องการรวมไว้ในแพ็คเกจ คำสั่งแพ็คเกจควรเป็นบรรทัดแรกในไฟล์ต้นฉบับ แต่ละไฟล์ต้นฉบับสามารถมีคำสั่งแพ็คเกจได้เพียงคำสั่งเดียว แล