บทช่วยสอน เขียน Java (ทับ) และการบรรทุกเกินพิกัด (Overload) ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ Rewrite (แทนที่),วิธีการเขียนกฎ,การใช้คำหลักที่ซูเปอร์,โอเวอร์โหลด (Overload),ความแตกต่างระหว่างการเขียนมากไป,
เขียนใหม่เป็น subclass ของขั้นตอนการดำเนินการเพื่อให้สามารถเข้าถึงวิธีการเรียนผู้ปกครองอีกครั้งเขียน! ค่าที่ส่งคืนและพารามิเตอร์จะไม่เปลี่ยนแปลง ว่าเป็นกรณีเดียวกันแกนเขียน!
เขียนใหม่ประโยชน์จาก subclasses ตามต้องการกำหนดเฉพาะเจาะจงในการกระทำของพวกเขา
นั่นคือ subclass ของวิธีการเรียนผู้ปกครองสามารถรับรู้ได้ตามความจำเป็น
ในหลักการเชิงวัตถุเขียนใหม่หมายความว่าคุณสามารถแทนที่วิธีการที่มีอยู่ ตัวอย่างมีดังนี้
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走"); } } public class TestDog{ public static void main(String args[]){ Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();//执行 Dog 类的方法 } }
ตัวอย่างข้างต้นรวบรวมผลมีดังนี้
动物可以移动 狗可以跑和走
ในตัวอย่างข้างต้นจะเห็นได้แม้ B เป็นประเภทสัตว์ แต่มันเป็นวิธีการดำเนินการย้ายระดับสุนัข
เพราะนี่คือที่รวบรวมเวลา แต่การตรวจสอบพารามิเตอร์ชนิดอ้างอิง
อย่างไรก็ตามในเวลาเรียกใช้ชนิดของเครื่องเสมือนจาวา (JVM) ของวัตถุที่ระบุและวิธีการดำเนินงานของวัตถุ
ดังนั้นในตัวอย่างข้างต้นคอมไพเลอร์ที่ได้รับสามารถที่จะประสบความสำเร็จเพราะวิธีการย้ายที่มีอยู่ระดับสัตว์ แต่วิ่งวิ่งเป็นวิธีการสำหรับวัตถุโดยเฉพาะอย่างยิ่ง
พิจารณาตัวอย่างต่อไปนี้:
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走"); } public void bark(){ System.out.println("狗可以吠叫"); } } public class TestDog{ public static void main(String args[]){ Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();//执行 Dog 类的方法 b.bark(); } }
ตัวอย่างข้างต้นรวบรวมผลมีดังนี้
TestDog.java:30: cannot find symbol symbol : method bark() location: class Animal b.bark(); ^
โปรแกรมจะโยนความผิดพลาดสะสมเพราะไม่มีการอ้างอิงประเภท B วิธีเปลือกสัตว์
เมื่อคุณจะต้องมีการเขียนใหม่เพื่อเรียกวิธีการเรียนของผู้ปกครองใน subclass ที่จะใช้คำหลักที่ซุปเปอร์
class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ super.move(); // 应用super类的方法 System.out.println("狗可以跑和走"); } } public class TestDog{ public static void main(String args[]){ Animal b = new Dog(); // Dog 对象 b.move(); //执行 Dog类的方法 } }
ตัวอย่างข้างต้นรวบรวมผลมีดังนี้
动物可以移动 狗可以跑和走
โอเวอร์โหลด (มากไป) อยู่ในระดับภายในวิธีการที่มีชื่อเดียวกัน แต่มีพารามิเตอร์ที่แตกต่างกัน ประเภทผลตอบแทนอาจจะเหมือนหรือต่างกัน
แต่ละวิธีมากเกินไป (หรือคอนสตรัค) จะต้องมีรายการที่ไม่ซ้ำกันของชนิดอาร์กิวเมนต์
ก่อสร้างมากเกินไปเท่านั้น
การบรรทุกเกินพิกัดกฎ
public class Overloading { public int test(){ System.out.println("test1"); return 1; } public void test(int a){ System.out.println("test2"); } //以下两个参数类型顺序不同 public String test(int a,String s){ System.out.println("test3"); return "returntest3"; } public String test(String s,int a){ System.out.println("test4"); return "returntest4"; } public static void main(String[] args){ Overloading o = new Overloading(); System.out.println(o.test()); o.test(1); System.out.println(o.test(1,"test3")); System.out.println(o.test("test4",1)); } }
จุดของความแตกต่าง | วิธีการมากเกินไป | วิธีการเอาชนะ |
---|---|---|
รายการพารามิเตอร์ | คุณต้องได้รับการแก้ไข | จะต้องไม่ได้รับการแก้ไข |
ประเภทกลับ | คุณสามารถปรับเปลี่ยน | จะต้องไม่ได้รับการแก้ไข |
ผิดปกติ | คุณสามารถปรับเปลี่ยน | สามารถลดลงได้หรือถูกลบออกคุณจะต้องไม่โยนข้อยกเว้นใหม่หรือที่กว้างขึ้น |
ทางเข้า | คุณสามารถปรับเปลี่ยน | จะต้องไม่เป็นข้อ จำกัด ที่เข้มงวดมากขึ้น (ไม่ จำกัด สามารถลดลง) |