JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #118. ความแตกต่างระหว่างภาษา C++ และ Java คืออ...

คอฟฟี่เบรค #118. ความแตกต่างระหว่างภาษา C++ และ Java คืออะไร ตัวสร้างส่วนตัวใน Java

เผยแพร่ในกลุ่ม

ความแตกต่างระหว่าง C++ และ Java คืออะไร

ที่มา: Hackernoon ภาษาการเขียนโปรแกรม C++ และ Java เป็นภาษาที่ได้รับความนิยมมากที่สุดในปัจจุบัน เรามาพูดถึงความแตกต่างที่สำคัญระหว่าง C++ และ Java กันดีกว่า คอฟฟี่เบรค #118.  ความแตกต่างระหว่างภาษา C++ และ Java คืออะไร  ตัวสร้างส่วนตัวใน Java - 1Java เป็นภาษาโปรแกรมวัตถุประสงค์ทั่วไป มันเป็นของภาษาเชิงวัตถุ ผู้สร้าง Java ต้องการนำหลักการ WORA ไปใช้ - “เขียนครั้งเดียว เรียกใช้ได้ทุกที่” ซึ่งหมายความว่าเมื่อคุณพัฒนาแอปพลิเคชันที่เขียนด้วย Java แอปพลิเคชันนั้นสามารถทำงานบนแพลตฟอร์มใดก็ได้ตราบใดที่มีการติดตั้ง Java Runtime Environment (JRE) ไว้ โปรแกรมทำงานโดยการคอมไพล์โค้ดที่เขียนด้วยภาษา Java ให้เป็น bytecode รูปแบบนี้ดำเนินการโดยใช้ JVM ซึ่งก็คือ Java Virtual Machine ดังนั้น JVM จึงเป็นส่วนหนึ่งของ Java Runtime Environment (JRE) เครื่องเสมือนเป็นอิสระจากแพลตฟอร์ม Java ยังมีกลไกการจัดการหน่วยความจำที่เรียกว่า Garbage Collector (GC) นักพัฒนาสร้างวัตถุ และ JRE ใช้ตัวรวบรวมขยะเพื่อล้างหน่วยความจำเมื่อวัตถุหยุด ไวยากรณ์ของภาษา Java คล้ายคลึงกับภาษา C-like อื่นๆ นี่คือคุณสมบัติบางประการ:
  • การพิจารณาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ - ผู้ใช้และ ID ผู้ใช้ใน Java เป็นเอนทิตีที่แตกต่างกัน

  • ชื่อวิธี . หากชื่อวิธีการประกอบด้วยคำเดียว จะต้องขึ้นต้นด้วยอักษรตัวพิมพ์เล็ก ตัวอย่าง: firstMethodName ( )

  • UpperCamelCase ใช้สำหรับตั้งชื่อคลาส หากชื่อประกอบด้วยคำเดียวจะต้องขึ้นต้นด้วยตัวพิมพ์ใหญ่ ตัวอย่าง: FirstClassName

  • ชื่อของไฟล์โปรแกรมจะต้องตรงกับชื่อของคลาสทุกประการโดยคำนึงถึงความละเอียดอ่อนของตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ตัวอย่างเช่น หากคลาสเรียกว่าFirstClassName ไฟล์ควรเรียกว่าFirstClassName.java

  • ตัวระบุจะขึ้นต้นด้วยตัวอักษร (AZ, az), $ หรือขีดล่าง _ เสมอ

ภาษา C++ คืออะไร?

C++ เป็นภาษาโปรแกรมทั่วไปที่คอมไพล์และพิมพ์ชัดเจน รองรับกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกัน: ขั้นตอน, ทั่วไป, ฟังก์ชัน; ความสนใจส่วนใหญ่มุ่งเน้นไปที่การสนับสนุนการเขียนโปรแกรมเชิงวัตถุ โดยพื้นฐานแล้ว C++ คือชุดคำสั่งที่บอกคอมพิวเตอร์ว่าต้องทำอะไร ชุดคำสั่งนี้มักเรียกว่าซอร์สโค้ดหรือโค้ดเพียงอย่างเดียว คำสั่งอาจเป็น "ฟังก์ชัน" หรือ "คำสำคัญ" คำหลัก (คำสงวน C/C++) เป็นส่วนสำคัญของภาษา ฟังก์ชันเป็นองค์ประกอบที่ซับซ้อนเนื่องจากเขียนขึ้นในรูปของฟังก์ชันที่เรียบง่ายกว่า โครงสร้างของฟังก์ชัน C++ และ Java มีลักษณะคล้ายกับเนื้อหาของหนังสือ สารบัญสามารถแสดงบทต่างๆ ของหนังสือ แต่ละบทในหนังสือสามารถมีสารบัญของตัวเองซึ่งประกอบด้วยย่อหน้า แต่ละย่อหน้าสามารถมีย่อหน้าย่อยของตัวเองได้ แม้ว่า C++ จะมีฟังก์ชันทั่วไปและคำสงวนมากมายที่คุณสามารถใช้ได้ แต่ภาษายังคงต้องการให้คุณเขียนฟังก์ชันของคุณเอง

ความแตกต่างที่สำคัญระหว่าง C++ และ Java

ทั้ง Java และ C++ เป็นภาษาการเขียนโปรแกรมเชิงวัตถุ แต่นั่นคือจุดที่ความคล้ายคลึงกันสิ้นสุดลง มีความแตกต่างมากขึ้นระหว่างพวกเขา แน่นอนว่ามีความแตกต่างที่สำคัญระหว่าง C++ และ Java ในการเลือกภาษาใดภาษาหนึ่งสำหรับการพัฒนาโครงการหรือกรณีเฉพาะอื่น ๆ นี่คือเกณฑ์ที่ต้องใส่ใจ

ห้องสมุด

จาวาหรือ C++? ห้องสมุดไหนใหญ่กว่าหรือดีกว่า? Java มีไลบรารี่อีกมากมาย แต่คุณจะรู้ได้อย่างไรว่าอันไหนควรใช้และอันไหนไม่ควร? นี่คือคำอธิบายสั้น ๆ เกี่ยวกับบางส่วน:
  • lang, util, nio, io, net
  • Java ยังมีไลบรารีสำหรับการทำงานกับเฟรมเวิร์ก GUI: javax.swing (ส่วนขยายที่ค่อนข้างล้าสมัยของ java.awt ที่เก่ากว่า)
  • คุณยังสามารถเล่นเพลงและสร้างไฟล์ MIDI โดยใช้ java.sound เป็นต้น
ภาษา C++ มี C Standard Library และ C++ Standard Library นักพัฒนาควรตรวจสอบให้แน่ใจก่อนว่าพวกเขาเข้าใจความแตกต่างระหว่าง C และ C++ นอกจากนี้พวกเขาจะต้องศึกษาห้องสมุดที่จะใช้ในโครงการใดโครงการหนึ่งด้วย Java มีการสนับสนุนในตัวสำหรับความคิดเห็นเกี่ยวกับเอกสาร C ++ ไม่รองรับความคิดเห็นเกี่ยวกับเอกสาร คุณยังสามารถใช้คอมไพเลอร์ Java ออนไลน์ที่สะดวกสบายได้

กลไกการป้อนข้อมูล

Java ได้รับการตีความเป็นหลัก ดังนั้นจึงเป็นอิสระจากแพลตฟอร์ม C ++ สร้างโค้ดวัตถุ รหัสเดียวกันไม่สามารถทำงานบนแพลตฟอร์มที่แตกต่างกันได้

การสนับสนุนเธรด

Java มีการสนับสนุนเธรดในตัว Java มีคลาสเธรดที่สืบทอดมาเพื่อสร้างเธรดใหม่และแทนที่วิธีการเริ่มต้น โปรดทราบว่า C++ ไม่รองรับเธรดดั้งเดิม เพื่อวัตถุประสงค์เหล่านี้ มีการใช้ไลบรารีของบุคคลที่สามที่ไม่ได้มาตรฐาน

วิธีการสนับสนุน

Java มีเมธอดโอเวอร์โหลด แต่ไม่มีโอเปอเรเตอร์โอเวอร์โหลด คลาส String ไม่ได้ใช้ตัวดำเนินการ + และ += เพื่อเชื่อมสตริงเข้าด้วยกัน และ Stringexpressions ใช้ประเภทการแปลงอัตโนมัติ แต่นี่เป็นกรณีพิเศษในตัว C++ รองรับทั้งการโอเวอร์โหลดเมธอดและโอเปอเรเตอร์โอเวอร์โหลด

การจัดการหน่วยความจำ

Java รองรับการควบคุมการจัดสรรฮีปอัตโนมัติ แต่ไม่รองรับตัวทำลาย ใน C++ การสนับสนุน destructors จะถูกเปิดใช้งานโดยอัตโนมัติเมื่อวัตถุถูกทำลาย

มรดกหลายรายการ

Java ไม่ได้จัดเตรียมการสืบทอดหลายรายการ อย่างน้อยก็ไม่ใช่ในลักษณะเดียวกับ C++ การสืบทอดหลายรายการเป็นคุณลักษณะของ C ++ ซึ่งคลาสสามารถสืบทอดจากคลาสมากกว่าหนึ่งคลาส

บทสรุป

นั่นคือความแตกต่างทั้งหมดระหว่าง Java และ C++ ภาษา Java เหมาะสำหรับโครงการเชิงพาณิชย์ เป็นที่ต้องการอย่างมากในบริษัทขนาดใหญ่ เนื่องจากการบำรุงรักษาและการปรับโครงสร้างโครงการที่มีอยู่จะยังคงมีความเกี่ยวข้องอยู่เสมอ อย่างน้อยก็ในธนาคารและสถาบันการเงินอื่นๆ คุณสามารถจัดการการพัฒนาข้ามแพลตฟอร์มได้ค่อนข้างดีและใช้เพื่อสร้างระบบสำหรับแพลตฟอร์มใดก็ได้ อย่างไรก็ตาม C++ มีข้อได้เปรียบเหนือ Java อื่นๆ เช่น รองรับทั้งการโอเวอร์โหลดเมธอดและการโอเวอร์โหลดของโอเปอเรเตอร์ การรองรับตัวทำลาย ฯลฯ

ตัวสร้างส่วนตัวใน Java

ที่มา: Dev.to ตัวสร้างใน Java เป็นวิธีการพิเศษที่มีชื่อเดียวกันกับชื่อคลาสหรือชื่อไฟล์ เมื่อเราเรียกวัตถุ ตัวสร้างภายในจะถูกเรียกเสมอ ส่วนใหญ่จะใช้เพื่อเริ่มต้นสถานะของวัตถุหรือค่าของตัวแปรในคลาส คอฟฟี่เบรค #118.  ความแตกต่างระหว่างภาษา C++ และ Java คืออะไร  ตัวสร้างส่วนตัวใน Java - 2ตอนนี้เรามาดูกันว่าตัวสร้างส่วนตัวคืออะไร Java ช่วยให้เราสามารถเปลี่ยนวิธีการขึ้นอยู่กับการใช้งานของเรา แล้วเราจะทำให้ Constructor เป็นแบบส่วนตัวเหมือนกับวิธีอื่นๆ ได้ไหม? และถ้าเป็นเช่นนั้น คอนสตรัคเตอร์ส่วนตัวจะมีประโยชน์อะไร? คำตอบ: ได้ เราสามารถประกาศ Constructor ใน Java ให้เป็น Constructor ส่วนตัวได้โดยใช้ตัวระบุการเข้าถึงส่วนตัว แต่จำไว้ว่าถ้าเราประกาศ Constructor แบบส่วนตัว เราจะไม่สามารถสร้างอ็อบเจ็กต์ของคลาสได้ แต่เราสามารถใช้ตัวสร้างส่วนตัวนี้ในรูปแบบการออกแบบซิงเกิลตันแทน กฎสำหรับผู้สร้างส่วนตัว:
  • ไม่อนุญาตให้คลาสเป็นคลาสย่อย
  • ไม่อนุญาตให้คุณสร้างวัตถุนอกชั้นเรียน
  • หากคลาสมีคอนสตรัคเตอร์ส่วนตัว เมื่อเราพยายามขยายคลาส จะเกิดข้อผิดพลาดเวลาคอมไพล์
  • เราไม่สามารถเข้าถึงตัวสร้างส่วนตัวจากคลาสอื่นได้
  • หากคลาสของเรามีเมธอดคงที่ทั้งหมด เราก็สามารถใช้ไพรเวตคอนสตรัคเตอร์ได้
  • หากวิธีการทั้งหมดเป็นแบบคงที่ เราสามารถใช้ตัวสร้างส่วนตัวได้
  • เราสามารถใช้ฟังก์ชันสาธารณะเพื่อเรียกตัวสร้างส่วนตัวได้หากวัตถุไม่ได้เตรียมใช้งาน
  • เราสามารถส่งคืนอินสแตนซ์ของวัตถุนี้ได้หากวัตถุนั้นเตรียมใช้งานแล้วเท่านั้น
public class PrivateConstructorDemo
{
     //creating an instance variable of the class Tester
     private static PrivateConstructorDemo pcd;
     //creating a private constructor
     private PrivateConstructorDemo()
     {
     }
    //creating a static method named getInstance()
    public static PrivateConstructorDemo getInstance()
    {
       if(pcd == null)
       {
        //creating a constructor of the class
        pcd = new PrivateConstructorDemo();
       }
     return pcd;
    }
    //main() method
    public static void main(String args[])
    {
     PrivateConstructorDemo pcd = PrivateConstructorDemo.getInstance();
    PrivateConstructorDemo pcd1 = PrivateConstructorDemo.getInstance();
    //invokes the getInstance() method and prints the corresponding result
    System.out.println(pcd.equals(pcd1));
   }
}
บทสรุป:
จริง
ตอนนี้เรามาดูกรณีการใช้งานสำหรับตัวสร้างส่วนตัวกัน วัตถุประสงค์หลักของการใช้ตัวสร้างส่วนตัวคือการจำกัดการสร้างวัตถุ ตัวสร้างส่วนตัวยังใช้เพื่อใช้รูปแบบการออกแบบซิงเกิลตัน ตัวเลือกสำหรับการใช้ตัวสร้างส่วนตัวมีดังนี้:
  • สามารถใช้ได้กับคลาสเฉพาะสมาชิกแบบคงที่
  • สามารถใช้กับยูทิลิตี้แบบคงที่หรือคลาสคงที่
  • นอกจากนี้ยังสามารถใช้เพื่อสร้างคลาสเดี่ยวได้
  • สามารถใช้สำหรับการตั้งชื่อได้ เช่น การสร้างโดยใช้วิธีการจากโรงงาน
  • นอกจากนี้ยังใช้เพื่อหลีกเลี่ยงคลาสย่อย
  • รวมถึงวิธีการของโรงงาน
ฉันหวังว่าคุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับตัวสร้าง Java ผ่านโพสต์นี้
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION