Dlaczego ciągi znaków są niezmienne w Javie?
Źródło: Dev.to Zanim zrozumiemy, dlaczego ciągi znaków są niezmienne w Javie, musimy pomyśleć o tym, dlaczego tworzymy coś niezmiennego? Niezmienny oznacza, że raz stworzonego nie możemy zmienić. Jedynym powodem, dla którego możemy pomyśleć o stworzeniu czegoś niezmiennego, jest synchronizacja, gdy są używane razem. To jest powód, dla którego ciągi znaków są niezmienne. W Javie obiekty String są udostępniane i buforowane w puli ciągów. Jest to określone miejsce na stercie, w którym przechowywane są ciągi znaków i współdzielone między wieloma wątkami, jeśli mają tę samą wartość. Na przykład: w puli ciągów, jeśli istnieje już ciąg znaków o wartości „test”, a program chce utworzyć kolejny obiekt ciągu o tej samej wartości, wówczas otrzyma to samo odwołanie zamiast tworzyć nowy obiekt ciągu. Teraz wiemy, w jaki sposób ciągi znaków są przechowywane na stercie. Zobaczmy, dlaczego się nie zmieniły.-
Pierwszym powodem niezmienności jest bezpieczeństwo wątków. Ponieważ wiersze są współdzielone przez wiele wątków w puli wierszy, musimy ograniczyć dowolny losowy wątek, aby go zmienić. Każda zmiana w wierszu może mieć wpływ na inne wątki uzyskujące dostęp do tego samego wiersza. Jeśli wątek chce zaktualizować wartość wiersza, musi utworzyć inny wiersz i odwoływać się do niego.
-
Zazwyczaj używamy String jako klucza w Map . Gdyby ciągi znaków były modyfikowalne, każdy mógłby zmienić ich wartość, a my stracilibyśmy rzeczywisty klucz.
Interfejs w Javie i wielokrotne dziedziczenie
Źródło: Dev.to Przyjrzyjmy się, czym jest dziedziczenie wielokrotne. Dziedziczenie wielokrotne to cecha niektórych obiektowych języków programowania, w której obiekt lub klasa może dziedziczyć funkcjonalność z więcej niż jednego obiektu nadrzędnego lub klasy nadrzędnej. Jak pokazano na powyższym obrazku, klasa potomna dziedziczenia wielokrotnego może mieć dwie lub więcej klas bazowych, ale aby to osiągnąć, potrzebujemy interfejsu.Interfejs
Interfejs w Javie jest projektem klasy. Ma stałe statyczne i metody abstrakcyjne. Oznacza to, że interfejs może zawierać tylko abstrakcyjne metody i zmienne, nie może mieć treści metody. Nie można jej utworzyć w taki sam sposób, jak klasy abstrakcyjnej.Gdzie więc deklarujemy treść tych metod?
Treść metody deklarowana jest wewnątrz klasy, w której metoda jest potrzebna zgodnie z wymaganiami programisty.Jak zadeklarować interfejs?
Interfejs można zadeklarować za pomocą słowa kluczowego interfejs . Składnia:interface interface_name {abstract methods}
Notatka
Aby użyć zadeklarowanego interfejsu w klasie, musimy użyć słowa kluczowego implements .Realizacja?
Najpierw utworzymy interfejs drukowania , a w nim utworzymy abstrakcyjną metodę print() ;interface printgib{
void print();
}
Mamy już gotowy interfejs do wykorzystania przez klasy, więc utwórzmy klasy abc i gk i zaimplementujmy w nich interfejs.
public class abc implements printgib{
public void print(){ //1st implementation of print
System.out.println("I love you 3000");
}
public static void main(String[] args){
abc obj = new abc();
gk obj1 = new gk();
obj.print();
obj1.print();
}
}
class gk implements printgib{
public void print(){ //2nd implementation of print
System.out.println("I am Gk");
}
}
Jak pokazano w powyższym kodzie, osiągnęliśmy wielokrotne dziedziczenie i zaimplementowaliśmy interfejs. Teraz, aby uruchomić kod, zapisz plik i...
javac file_name.java
java abc
GO TO FULL VERSION