คำหลัก Java Super
คำหลัก Super นั้นคล้ายคลึงกับสิ่งนี้ซึ่งใช้เพื่อแสดงอินสแตนซ์ของคลาสปัจจุบันและ Super ใช้เพื่อแสดงคลาสแม่
Super สามารถใช้ในคลาสย่อยเพื่อรับตัวแปรสมาชิกและวิธีการของคลาสแม่ผ่านจุด (.) Super ยังสามารถใช้ในคลาสย่อยของคลาสย่อยและ Java สามารถติดตามชนชั้นสูงได้โดยอัตโนมัติ
พฤติกรรมของคลาสแม่ถูกเรียกว่าราวกับว่าพฤติกรรมเป็นพฤติกรรมของคลาสนี้และพฤติกรรมการโทรไม่จำเป็นต้องเกิดขึ้นในคลาสหลักมันสามารถติดตามชนชั้นสูงได้โดยอัตโนมัติ
ฟังก์ชั่นของคำหลัก Super:
เรียกตัวแปรที่ประกาศว่าเป็นส่วนตัวในชั้นเรียนหลัก
คลิกวิธีการที่ครอบคลุม
แสดงถึงตัวสร้างคลาสแม่เป็นชื่อวิธี
โทรหาตัวแปรที่ซ่อนอยู่และวิธีการเขียนทับ
การสาธิตระดับสาธารณะ {โมฆะคงที่หลัก (String [] args) {dog obj = dog ใหม่ (); ประกาศวิธีการของ Getter String GetDesc () {return desc;} โมฆะสาธารณะย้าย () {system.out.println ("สัตว์สามารถเคลื่อนที่ได้"); ); ;
ผลการทำงาน:
สัตว์สามารถขยับได้สามารถเดินได้และจำได้ว่า: สัตว์เป็นเพื่อนที่ดีของมนุษย์
วิธีการย้าย () ยังสามารถกำหนดได้ในคลาสบรรพบุรุษบางอย่างเช่นคลาสแม่ของคลาสแม่
ในการเรียกตัวแปรที่ซ่อนอยู่ของคลาสแม่ผ่าน Super คุณต้องประกาศวิธีการ getter ในคลาสหลักเนื่องจากสมาชิกข้อมูลที่ประกาศว่าเป็นส่วนตัวไม่สามารถมองเห็นได้ในคลาสย่อย
เรียกตัวสร้างของคลาสแม่
ในหลายกรณีตัวสร้างเริ่มต้นใช้เพื่อเริ่มต้นวัตถุคลาสแม่ แน่นอนคุณยังสามารถใช้ Super เพื่อแสดงตัวสร้างที่เรียกคลาสพาเรนต์
การสาธิตระดับสาธารณะ {โมฆะสาธารณะคงที่ (สตริง [] args) {dog obj = สุนัขใหม่ ("huahua", 3); . name = name; ("ฉันเป็นลูกสุนัขที่น่ารักชื่อของฉันคือ" + ชื่อ + ", ฉัน" + อายุ + "ปี");
ผลการทำงาน:
ฉันเป็นลูกสุนัขที่น่ารักชื่อของฉันคือ Huahua ฉันอายุ 3 ขวบ
หมายเหตุ: ไม่ว่าจะเป็น super () หรือ this () จะต้องวางไว้ในบรรทัดแรกของตัวสร้าง
เป็นที่น่าสังเกต:
ตัวสร้างอื่นเรียกว่าในตัวสร้างและการดำเนินการโทรจะต้องวางไว้ที่ตำแหน่งเริ่มต้น
ตัวสร้างไม่สามารถเรียกได้ภายในวิธีใด ๆ นอกเหนือจากตัวสร้าง
คอนสตรัคเตอร์เพียงตัวเดียวเท่านั้นที่สามารถเรียกได้ภายในตัวสร้าง
หากคุณเขียนคอนสตรัคเตอร์โดยไม่ต้องโทร super () หรือ this () คอมไพเลอร์จะแทรกการโทรไปยังคอนสตรัคเตอร์คลาสแม่โดยไม่มีพารามิเตอร์
ในที่สุดโปรดสังเกตความแตกต่างระหว่าง Super และสิ่งนี้: Super ไม่ได้อ้างอิงถึงวัตถุและ Super ไม่สามารถกำหนดให้กับตัวแปรวัตถุอื่นได้
Java Instanceof Operator <br /> polymorphism นำปัญหาซึ่งเป็นวิธีการตัดสินประเภทของวัตถุที่อ้างอิงจริงโดยตัวแปร C ++ ใช้ข้อมูลประเภทรันไทม์ (RTTI) และ Java ใช้ตัวดำเนินการอินสแตนซ์ของ
ตัวดำเนินการอินสแตนซ์ของตัวดำเนินการเพื่อกำหนดประเภทจริงของวัตถุที่อ้างอิงโดยตัวแปร โปรดดูรหัสต่อไปนี้:
การสาธิตระดับสุดท้ายของสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// อ้างอิงอินสแตนซ์ของคนชั้นคน OBJ = คนใหม่ () ถ้า (OBJ Instanceof Object) {System.out.pr Intln ("ฉันเป็น Object ");} ถ้า (OBJ instanceof people) {system.out.println (" ฉันเป็นมนุษย์ ");} ถ้า (obj instance ของครู) {system.out.println (" ฉันเป็นครู ");} ถ้า (ประธานาธิบดี OBJ) {System.out.println ("ฉันเป็นอาจารย์ใหญ่"); Line // ตัวอย่างอ้างถึงคลาสครู OBJ = ใหม่ครู (); ถ้า (OBJ Instanceof Object) {System.out.println ("ฉันเป็นวัตถุ"); "ฉันเป็นมนุษย์"); ); { ::::::::::::::::::::::: กระทาน :::::::::::::::::::::::::::::::::::::: กระทาน
ผลการทำงาน:
ฉันเป็นวัตถุฉันเป็นมนุษย์ ---------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------ ------------------------
ดังที่เห็นได้อินสแตนซ์ของการส่งคืนจริงหากตัวแปรหมายถึงอินสแตนซ์ของคลาสปัจจุบันหรือคลาสย่อยของมันมิฉะนั้นเท็จ