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.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
GO TO FULL VERSION