JavaRush /Blog Java /Random-PL /Przerwa kawowa #139. Przeciążanie i zastępowanie w Javie....

Przerwa kawowa #139. Przeciążanie i zastępowanie w Javie. 5 metod Java, o których nie wiedziałeś

Opublikowano w grupie Random-PL

Przeciążanie i zastępowanie w Javie

Źródło: Medium W tym artykule dowiesz się o metodach Overriding i Overloading w języku Java. Z uwagi na fakt, że oba te pojęcia są często ze sobą mylone, warto dokładnie zrozumieć cel poszczególnych metod oraz możliwości ich zastosowania. Przerwa kawowa #139.  Przeciążanie i zastępowanie w Javie.  5 metod Java, o których nie wiedziałeś - 1

Przeciążenie

Używanie więcej niż jednej metody o tej samej nazwie, ale z różnymi parametrami w tej samej klasie lub metodzie pomiędzy nadklasą a podklasą w Javie nazywa się Przeciążaniem. Aby tego uniknąć, stosuje się jedną metodę zamiast wielu, które wykonują podobne działania. Wyjaśnijmy na przykładzie:
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);
    }
}
W tym kodzie metoda operacji jest przeciążona. Metody o tych samych nazwach akceptują parametry różnych typów. Wybór trybu ustalany jest odrębnie dla parametrów int i double . Kiedy uruchamiamy program, operacja.mod (12,4) uruchamia void.mod (int a, int b) , a operacja.mod (12.4,4.2) uruchamia void.mod (double a, double b) .

Nadrzędny

W Javie możemy stworzyć nadklasę i podklasy, które dziedziczą z tej klasy. Te podklasy mogą przesłaniać i zastępować metody klasy nadrzędnej, którą dziedziczą. Odbywa się to za pomocą metody Overriding. Można to lepiej zrozumieć na przykładzie:
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");
    }
}
Ten przykładowy kod tworzy nadklasę o nazwie Animal i podklasy o nazwach Cat i Bee , które dziedziczą z tej nadklasy. Metoda dźwiękowa w nadklasie została zastąpiona. Uwaga: Separacja przeciążonych metod następuje na etapie kompilacji. Oddzielenie przesłoniętych metod następuje w czasie wykonywania.

5 metod Java, o których nie wiedziałeś

Źródło: Javarevisited Ekosystem programistyczny Java udostępnia wiele narzędzi, które programiści mogą importować i wykorzystywać w swoich programach. Należą do nich wbudowane klasy i metody. Znacząco upraszczają pracę programisty i pozwalają mu lepiej zrozumieć i napisać kod. Każdy programista powinien o nich wiedzieć. Oto 5 metod Java, które są dość rzadkie, ale mogą być bardzo przydatne w Twojej pracy.

1. zmniejszenieDokładnie

dekrementExact() to podstawowa funkcja Java z klasy Math , która zmniejsza/odejmuje podany argument (liczbę) o jeden i zwraca wynik. Ta funkcja jest przeciwieństwem funkcji inkrementExact() . Na przykład, jeśli podany argument wynosi 11, wynikiem jest 10. Jeśli zmniejszenie argumentu powoduje przepełnienie jego typu danych, zgłaszany jest wyjątek. Dlatego ważne jest, aby zachować ostrożność podczas korzystania z tej funkcji, szczególnie w przypadku dużych liczb. Zazwyczaj w tej funkcji używane są liczby całkowite. Składnia:
Math.decrementExact(number);
Przykład:
System.out.println(Math.decrementExact(11));
// Output: 10

2.getAsDouble

getAsDouble() jest metodą należącą do klasy OptionDouble . Obiekt OptionDouble to taki, który może potencjalnie przechowywać podwójną liczbę. Metod tej klasy można używać do wykonywania operacji na wartości double występującej w obiekcie lub do wskazywania, że ​​wartość double w ogóle nie występuje. getAsDouble() jest jedną z takich metod i zwraca wartość double, jeśli jest obecna. W przeciwnym razie zostanie zgłoszony wyjątek NoSuchElementException . Składnia:
OptionalDoubleObject.getAsDouble();
Przykład:
OptionalDouble num = OptionalDouble.of(15.0);
System.out.println(num.getAsDouble());
// Output: 15.0

3. absDokładne

Metoda absExact() jest podobna do funkcji abs() w klasie Math . Zwraca wartość bezwzględną liczby, która jest wartością dodatnią liczby niezależnie od jej znaku. Jedyna różnica polega na tym, że robi to tylko wtedy, gdy jest dokładnie reprezentowany jako typ danych ( int lub long ). Jeśli wynik zwracanej wartości przekracza oryginalny typ danych, zgłaszany jest wyjątek ArithmeticException . Składnia:
Math.absExact(number);
Przykład:
System.out.println(Math.absExact(-11));
// Output: 11

4. kończy się

endWith() to wbudowana metoda łańcuchowa, która zwraca wartość logiczną w zależności od tego, czy dany ciąg kończy się określonym sufiksem (słowo końcowe/łańcuch znaków) w parametrach. Ta metoda jest przeciwieństwem metody startWith() , którą prawdopodobnie zna wielu programistów. Składnia:
String.endsWith(String suffix);
Przykład:
String phrase = "I like bananas";
System.out.println(phrase.endsWith("bananas")); // true
System.out.println(phrase.endsWith("Tandrew")); // false
/* Output:
true
false
*/

5. podzielUnigned

Metoda splitUnsigned() to metoda z klasy Integer , która pozwala podzielić dwie liczby i zwrócić wynik dzielenia. Liczby całkowite bez znaku, w porównaniu ze zwykłymi liczbami całkowitymi ze znakiem, mogą reprezentować tylko liczby dodatnie. Zarówno liczby całkowite bez znaku, jak i liczby całkowite ze znakiem mają w swoim zakresie tę samą liczbę liczb (rozmiar zakresu wynosi 65 536 liczb). Ponieważ jednak liczby całkowite bez znaku nie mogą być ujemne, ich maksymalna wartość w zakresie dodatnim jest znacznie wyższa niż maksymalna wartość zwykłej liczby całkowitej ze znakiem. Aby to uprościć, możemy zamiast tego spojrzeć na przykład bajtów ze znakiem i bez znaku. Bajty mają zakres 256 liczb. Zwykły bajt może mieć wartość od -128 do 127. Jednak bajt bez znaku może mieć wartość od 0 do 255. W przeciwnym razie funkcja działa dokładnie tak samo jak zwykłe dzielenie. Składnia:
Integer.divideUnsigned(int dividend, int divisor);
Przykład:
int dividend = 10;
int divisor = 5;
int quotient = Integer.divideUnsigned(dividend, divisor);
System.out.println(quotient);
// Output: 2

Wniosek

Oto podsumowanie funkcji i metod omówionych w tym artykule:
  • dekrementExact - zmniejsza/odejmuje podaną liczbę o 1

  • getAsDouble – część funkcji OptionDouble , zwraca liczbę o wartości podwójnej lub sygnalizuje jej brak

  • absExact - zwraca wartość bezwzględną liczby, jeśli można ją przedstawić jako oryginalny typ danych

  • endWith() - zwraca wartość logiczną w zależności od tego, czy podany przyrostek istnieje w podanym ciągu

  • splitUnsigned() - wykonuje normalne dzielenie, zwraca wynik dzielenia liczby

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION