เหตุใด Strings จึงไม่เปลี่ยนรูปใน Java
Source: Dev.to ก่อนที่จะทำความเข้าใจว่าทำไม Strings ถึงไม่เปลี่ยนรูปใน Java เราต้องคิดก่อนว่าทำไมเราถึงสร้างบางสิ่งที่ไม่เปลี่ยนรูป
-
เหตุผลแรกของความไม่เปลี่ยนรูปคือความปลอดภัยของเธรด เนื่องจากแถวต่างๆ ถูกใช้ร่วมกันระหว่างหลายๆ เธรดในพูลแถว เราจึงต้องจำกัดเธรดแบบสุ่มใดๆ เพื่อเปลี่ยนแปลง การเปลี่ยนแปลงแถวอาจส่งผลต่อเธรดอื่นที่เข้าถึงแถวเดียวกัน หากเธรดต้องการอัพเดตค่าของแถว เธรดนั้นจำเป็นต้องสร้างแถวอื่นและอ้างอิงเธรดนั้น
-
โดยปกติ แล้วเราใช้Stringเป็นกุญแจสำคัญในMap หากสตริงไม่แน่นอน ใครๆ ก็สามารถเปลี่ยนค่าของสตริงได้ และเราจะสูญเสียคีย์จริงไป
อินเทอร์เฟซใน Java และการสืบทอดหลายรายการ
ที่มา: Dev.to มาทำความเข้าใจกันว่า Multi Inheritance คืออะไร การสืบทอดหลายรายการเป็นคุณลักษณะของภาษาโปรแกรมเชิงวัตถุบางภาษา ซึ่งวัตถุหรือคลาสสามารถสืบทอดฟังก์ชันการทำงานจากวัตถุหลักหรือคลาสหลักมากกว่าหนึ่งรายการได้
อินเตอร์เฟซ
อินเทอร์เฟซใน Java คือพิมพ์เขียวของคลาส มีค่าคงที่คงที่และวิธีการเชิงนามธรรม นั่นคืออินเทอร์เฟซสามารถมีเมธอดและตัวแปรเชิงนามธรรมเท่านั้น ไม่สามารถมีเนื้อความของเมธอดได้ ไม่สามารถสร้างได้ในลักษณะเดียวกับคลาสนามธรรมแล้วเราจะประกาศเนื้อหาของวิธีการเหล่านี้ที่ไหน?
เนื้อความของวิธีการถูกประกาศภายในคลาสที่ต้องการวิธีการตามความต้องการของโปรแกรมเมอร์จะประกาศอินเทอร์เฟซได้อย่างไร?
สามารถประกาศอินเทอร์เฟซได้โดยใช้ คีย์เวิร์ด อินเทอร์เฟ ซ ไวยากรณ์:interface interface_name {abstract methods}
บันทึก
เพื่อที่จะใช้อินเทอร์เฟ ซ ที่ประกาศไว้ในคลาส เราต้องใช้ คีย์เวิร์ด Implementsการนำไปปฏิบัติ?
อันดับแรก เราจะสร้างprint interface และภายในนั้น เราจะสร้าง abstract print() method ;interface printgib{
void print();
}
ตอนนี้เรามีอินเทอร์เฟซที่พร้อมสำหรับคลาสที่จะใช้ ดังนั้นเรามาสร้างคลาสabcและgkและใช้งานอินเทอร์เฟซในคลาสเหล่านั้นกันดีกว่า
public class abc implements printgib{
public void print(){ //1st implementation of print
System.out.println("I love you 3000");
}
public static void main(String[] args){
abc obj = new abc();
gk obj1 = new gk();
obj.print();
obj1.print();
}
}
class gk implements printgib{
public void print(){ //2nd implementation of print
System.out.println("I am Gk");
}
}
ดังที่แสดงในโค้ดข้างต้น เราได้รับมรดกหลายรายการและใช้งานอินเทอร์เฟซ ตอนนี้เพื่อรันโค้ด บันทึกไฟล์และ...
javac file_name.java
java abc
ผลลัพธ์:

GO TO FULL VERSION