JavaRush /Blog Java /Random-PL /Przerwa kawowa #105. Dlaczego ciągi znaków są niezmienne ...

Przerwa kawowa #105. Dlaczego ciągi znaków są niezmienne w Javie? Interfejs w Javie i wielokrotne dziedziczenie

Opublikowano w grupie Random-PL

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? Przerwa kawowa #105.  Dlaczego ciągi znaków są niezmienne w Javie?  Interfejs w Javie i wielokrotne dziedziczenie - 1Niezmienny 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.
  1. 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.

  2. 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. Przerwa kawowa #105.  Dlaczego ciągi znaków są niezmienne w Javie?  Interfejs w Javie i wielokrotne dziedziczenie - 1Jak 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

Wynik:

Przerwa kawowa #105.  Dlaczego ciągi znaków są niezmienne w Javie?  Interfejs w Javie i wielokrotne dziedziczenie - 2
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION