JavaRush /Java блог /Random UA /Кава-брейк #139. Перевантаження та перевизначення в Java....

Кава-брейк #139. Перевантаження та перевизначення в Java. 5 методів Java, про які ви не знали

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

Перевантаження та перевизначення в Java

Джерело: Medium Завдяки цій статті ви дізнаєтеся про методи перевизначення (Overriding) та перевантаження (Overloading) у мові Java. Через те, що обидва ці терміни часто плутають між собою, варто чітко розуміти призначення кожного методу та варіанти їх застосування. Кава-брейк #139.  Перевантаження та перевизначення в Java.  5 методів Java, про які ви не знали.

Перевантаження (Overloading)

Використання більше одного методу з тим самим ім'ям, але з різними параметрами в тому самому класі або методі між суперкласом і підкласом в Java називається перевантаженням (Overloading). Щоб цього уникнути, використовується один метод замість множини, що виконують аналогічні дії. Пояснимо на прикладі:
public class MethodOverloading {

    public static void main(String[] args){
        MethodOverloading operation = new MethodOverloading();
        operation.mod(12,4);
        operation.mod(12.4,4.2);
    }

    void mod(double a, double b){
        System.out.println(a % b);
    }

    void mod(int a, int b){
        System.out.println(a % b);
    }
}
У цьому коді метод операції перевантажено. Методи з однаковими іменами набувають параметрів різних типів. Вибір режиму визначається окремо для параметрів int та double . Коли ми запускаємо програму, operation.mod (12,4) запускає void.mod (int a, int b) , а operation.mod (12.4,4.2) запускає void.mod (double a, double b) .

Перевизначення (Overriding)

У Java ми можемо створити суперклас та підкласи, які успадковуються від цього класу. Ці підкласи можуть перевизначати та замінювати методи батьківського класу, які вони успадковують. Це робиться за допомогою методу перевизначення (Overriding). Краще зрозуміти це можна на прикладі:
public class MethodOverriding {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.sound();

        Bee bee = new Bee();
        bee.sound();
    }
}

class Animal {
    void sound(){
        System.out.println("Animal sounds");
    }
}

class Cat extends Animal{
    @Override
    void sound() {
        System.out.println("Cat : meow meow");
    }
}

class Bee extends Animal{
    @Override
    void sound() {
        System.out.println("Bee : buzz buzz");
    }
}
У цьому прикладі коду створюється суперклас з ім'ям Animal та підкласи з іменами Cat та Bee , успадковані від цього суперкласу. Метод sound у суперкласі перевизначено. Примітка: Розподіл перевантажених методів відбувається на етапі компіляції. Поділ перевизначених методів відбувається на етапі виконання.

5 методів Java, про які ви не знали

Джерело: Javarevisited Екосистема розробки на мові Java має багато доступних інструментів, які програмісти можуть імпортувати та використовувати у своїх програмах. До них входять вбудовані класи та методи. Вони помітно спрощують роботу програмісту, дозволяють краще розуміти та писати код. Про них потрібно знати кожному розробнику. Тут наведено 5 методів Java, які зустрічаються досить рідко, але можуть виявитися дуже корисними у роботі.

1. decrementExact

decrementExact() — це базова функція Java з класу Math , яка зменшує/віднімає заданий аргумент (число) на одиницю і повертає результат. Ця функція протилежна функції incrementExact() . Наприклад, якщо заданий аргумент дорівнює 11, результатом буде 10. Якщо зменшення аргументу призводить до переповнення його типу даних, створюється виняток. Тому важливо бути обережними при використанні цієї функції, особливо для великих чисел. Зазвичай цієї функції використовуються цілі числа. Синтаксис:
Math.decrementExact(number);
Приклад:
System.out.println(Math.decrementExact(11));
// Output: 10

2. getAsDouble

getAsDouble() є методом, що належить класу OptionalDouble . Об'єкт OptionalDouble – це той об'єкт, який потенційно може містити подвійне число. p align="justify"> Методи в класі можна використовувати для роботи з подвійним значенням, присутнім в об'єкті, або вказати, що подвійне значення взагалі не міститься. getAsDouble() є одним з таких методів, і він повертає подвійне значення, якщо воно є. В іншому випадку з'являється виняток NoSuchElementException . Синтаксис:
OptionalDoubleObject.getAsDouble();
Приклад:
OptionalDouble num = OptionalDouble.of(15.0);
System.out.println(num.getAsDouble());
// Output: 15.0

3. absExact

Метод absExact() аналогічний функції abs() у класі Math . Він повертає абсолютне значення числа, яке є позитивним значенням числа, незалежно від його знака. Різниця лише тому, що він робить це у тому разі, якщо він точно представлений як його тип даних ( int чи long ). Якщо результат значення, що повертається, перевищує вихідний тип даних, з'являється виняток ArithmeticException . Синтаксис:
Math.absExact(number);
Приклад:
System.out.println(Math.absExact(-11));
// Output: 11

4. endsWith

endsWith() є вбудованим рядковим (built-in string) методом, який повертає логічне значення залежно від того, чи закінчується цей рядок певним суфіксом (кінцевим словом/рядком) у параметрах. Цей метод протилежний методу startsWith() , з яким напевно знайомі багато розробників. Синтаксис:
String.endsWith(String suffix);
Приклад:
String phrase = "I like bananas";
System.out.println(phrase.endsWith("bananas")); // true
System.out.println(phrase.endsWith("Tandrew")); // false
/* Output:
true
false
*/

5. divideUnisgned

Метод divideUnsigned() являє собою метод із класу Integer , який дозволяє розділити два числа та повернути результат поділу. Цілі числа без знака (Unsigned), порівняно із звичайними цілими числами зі знаком (Signed), можуть становити лише позитивні числа. І цілі числа без знака, і цілі числа зі знаком мають однакову кількість чисел у своєму діапазоні (розмір діапазону становить 65536 чисел). Однак оскільки цілі числа без знака не можуть бути негативними, їхнє максимальне значення в позитивному діапазоні набагато вище, ніж максимальне значення для звичайного цілого числа зі знаком. Щоб спростити це, ми можемо натомість розглянути приклад signed та unsigned байта. Байти мають діапазон 256 чисел. Звичайний байт може мати значення від -128 до 127. Однак байт без знака може мати значення від 0 до 255. В іншому функція працює так само, як звичайне поділ. Синтаксис:
Integer.divideUnsigned(int dividend, int divisor);
Приклад:
int dividend = 10;
int divisor = 5;
int quotient = Integer.divideUnsigned(dividend, divisor);
System.out.println(quotient);
// Output: 2

Висновок

Ось короткий зміст функцій та методів, що обговорюються у цій статті:
  • decrementExact — зменшує/віднімає задане число на 1

  • getAsDouble - частина функції OptionalDouble , повертає число з подвійним значенням або вказує на його відсутність

  • absExact - повертає абсолютне значення числа, якщо воно може бути представлене як вихідний тип даних

  • endsWith() — повертає логічне значення залежно від того, чи існує вказаний суфікс у даному рядку

  • divideUnsigned() — виконує звичайний поділ, повертає результат поділу числа

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ