JavaRush /Java блог /Random UA /Кава-брейк #118. У чому різниця між мовами С++ та Java. П...

Кава-брейк #118. У чому різниця між мовами С++ та Java. Приватні конструктори в Java

Стаття з групи Random UA

У чому різниця між С++ та Java

Джерело: Hackernoon Мови програмування C++ і Java є одними з найпопулярніших на сьогоднішній день. Давайте обговоримо основні відмінності між C + + і Java. Кава-брейк #118.  У чому різниця між мовами С++ та Java.  Приватні конструктори в Java - 1Java – мова програмування загального призначення. Він належить до об'єктно-орієнтованих мов. Творці Java хотіли продати принцип WORA - "один раз пишете, а запускаєте де завгодно" (Write Once, Run Anywhere). Це означає, що коли ви розробляєте програму, написану на Java, вона може працювати на будь-якій платформі, якщо на ній встановлено середовище виконання Java (JRE). Запуск програми відбувається шляхом компіляції коду, написаного Java, в байт-код. Цей формат виконується за допомогою JVM, тобто віртуальної машини Java. Відповідно, JVM є частиною середовища виконання Java (JRE). Віртуальна машина залежить від платформи. Java також має механізм управління пам'яттю, званий збирачем сміття (Garbage Collector, GC). Розробник створює об'єкти, а JRE використовує збирач сміття для очищення пам'яті, коли об'єкти зупиняються. Синтаксис мови Java подібний до синтаксису інших C-подібних мов. Ось деякі з його особливостей:
  • Чутливість до регістру - користувач та ідентифікатор користувача Java є різними сутностями.

  • Найменування методу . Якщо ім'я методу складається з одного слова, воно має починатися з малої літери. Приклад: firstMethodName() .

  • UpperCamelCase використовується для назви класів. Якщо ім'я складається з одного слова, воно має починатися з великої літери. Приклад: FirstClassName .

  • Ім'я файлів програми має точно збігатися з назвою класу з урахуванням реєстрозалежності. Наприклад, якщо клас називається FirstClassName , файл повинен називатися FirstClassName.java .

  • Ідентифікатори завжди починаються з літери (AZ, az), $ або підкреслення _.

Що таке мова С++?

C++ - це компілювана строго типізована мова програмування загального призначення. Він підтримує різні парадигми програмування: процедурну, узагальнену, функціональну; Найбільше уваги приділяється підтримці об'єктно-орієнтованого програмування. По суті, C++ - це набір команд, які повідомляють комп'ютер, що робити. Такий набір команд зазвичай називають вихідним кодом або кодом. Команди - це або "функції", або "ключові слова". Ключові слова (зарезервовані C/C++) є базовими будівельними блоками мови. Функції це складні будівельні блоки, оскільки вони написані в термінах більш простих функцій. Структура функцій С++ та Java нагадує зміст книги. У змісті можуть відображатися розділи книги, кожен розділ у книзі може мати свій зміст, що складається з абзаців; кожний абзац може мати свої підпункти. Хоча C++ надає безліч загальних функцій і зарезервованих слів, які ви можете використовувати, в цій мові все ж таки існує потреба в написанні власних функцій.

Ключові відмінності між C++ та Java

І Java, і C++ є об'єктно-ориентированными мовами програмування, але цьому їх схожість закінчується. Відмінностей між ними більше. Звичайно, є критична різниця між C++ і Java, якщо ви підходите до вибору однієї мови для розробки проекту або будь-якого іншого конкретного випадку. Ось критерії, на які слід звернути увагу.

Бібліотеки

Java чи С++? Яка бібліотека більша чи краща? У бібліотек Java набагато більше. Але як зрозуміти, які з них слід використати, а які ні? Ось короткий опис деяких із них:
  • lang, util, nio, io, net.
  • Java також має бібліотеки для роботи з GUI-фреймворками: javax.swing (досить застаріле розширення ще більш старого java.awt).
  • Можна навіть відтворювати музику та створювати MIDI-файли, використовуючи java.sound тощо.
У мові C++ є стандартна бібліотека C та стандартна бібліотека C++. Розробники повинні спочатку переконатися, що вони розуміють різницю між C та C++. Крім того, вони повинні вивчити бібліотеки, які збираються застосовувати в тому чи іншому проекті. Java має вбудовану підтримку коментарів до документації. C++ не підтримує коментарів до документації. Ви також можете використовувати зручний онлайн компілятор Java.

Механізм введення

Java в основному інтерпретується, тому не залежить від платформи. C++ генерує об'єктний код; той самий код не може працювати на різних платформах.

Підтримка потоків

Java має вбудовану підтримку потоків. У Java є потоки класів, які успадковуються створення нового потоку і перевизначення методу запуску. Врахуйте, що C++ немає нативної підтримки потоків. Для цього використовуються нестандартизовані сторонні бібліотеки.

Підтримуючий метод

Java має метод перевантаження, але відсутня перевантаження операторів. Клас Stringclass не використовує оператори + і + = для об'єднання рядків, а рядки Stringexpressions використовують типи автоматичного перетворення, але це особливий вбудований випадок. C++ підтримує як навантаження методів, і перевантаження операторів.

Управління пам'яттю

Java підтримує автоматичне керування звільненням динамічної пам'яті, але не підтримує деструкторів. C++ підтримка деструкторів автоматично активується при знищенні об'єкта.

Множинне успадкування

Java не забезпечує множинного успадкування, принаймні не так, як C++. Множинне успадкування — це особливість C++, коли клас може успадковувати більш ніж один клас.

Висновок

Ось вам і вся різниця між Java та C++. Мова Java ідеально підходить для комерційних проектів. Він має великий попит у великих компаніях, оскільки підтримка та рефакторинг існуючих проектів завжди залишаться актуальними — принаймні в банках та інших фінансових установах. Ви цілком впораєтеся з кросплатформовою розробкою та з її допомогою створите систему для будь-якої платформи. C++ в порівнянні з Java, однак, має інші переваги, наприклад, підтримка як навантаження методів, так і навантаження операторів, підтримка деструкторів і т.д.

Приватні конструктори в Java

Джерело: Dev.to Конструктор Java - це особливий тип методу, який має те ж ім'я, що і ім'я класу або ім'я файлу. Коли ми викликаємо об'єкт, завжди викликається внутрішній конструктор. Здебільшого він використовується для ініціалізації стану об'єкта чи значень змінних у класі. Кава-брейк #118.  У чому різниця між мовами С++ та Java.  Приватні конструктори в Java - 2Тепер подивимося, що таке приватні конструктори. Java дозволяє нам змінювати методи, залежно від нашого використання. Отже, чи можемо зробити конструктор закритим, як і інші методи? І якщо так, то яка користь від приватного конструктора? Відповідь: так, ми можемо оголосити конструктор Java як приватний конструктор, використовуючи специфікатор приватного доступу. Але пам'ятайте, що якщо ми оголосимо конструктор як приватний, ми не зможемо створити об'єкт класу. Натомість ми можемо використовувати цей закритий конструктор у шаблоні проектування Singleton. Правила для приватних конструкторів:
  • Він не дозволяє класу бути підкласом.
  • Не дозволяє створити об'єкт поза класом.
  • Якщо клас має закритий конструктор, то коли ми намагаємося розширити клас, виникає помилка часу компіляції.
  • Ми не можемо отримати доступ до приватного конструктора з іншого класу.
  • Якщо наш клас має всі константні методи, ми можемо використовувати приватний конструктор.
  • якщо всі методи статичні, ми можемо використовувати приватний конструктор.
  • Ми можемо використовувати загальнодоступну функцію виклику закритого конструктора, якщо об'єкт не ініціалізований.
  • Ми можемо повернути лише екземпляр цього об'єкта, якщо об'єкт вже ініціалізований.
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));
   }
}
Висновок:
true
Тепер розглянемо варіанти використання приватних конструкторів. Основна мета використання закритого конструктора – обмеження створення об'єктів. Також закриті конструктори використовуються для реалізації шаблону проектування Singleton. Варіанти використання приватного конструктора:
  • Його можна використовувати зі статичними members-тільки класами.
  • Його можна використовувати зі статичною утилітою або константними класами.
  • Його можна використовувати для створення одноелементних класів.
  • Його можна використовувати для присвоєння імені, наприклад створення з використанням фабричних методів.
  • Він також використовується, щоб уникнути підкласів.
  • Він включає у собі фабричні методи.
Сподіваюся, завдяки цій публікації ви дізналися більше про конструкторів Java.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ