Classes Flashcards
1
Q
Jak stworzyć klasę immutable w Javie ?
A
- Oznaczenie klasy jako finalna: Dzięki temu nie można jej rozszerzyć (dziedziczyć po niej), co zapobiega naruszeniu jej niezmienności przez klasy potomne.
- ustawienie wszystkich pól jako private i final: Oznaczenie pól jako private sprawia, że nie można ich bezpośrednio modyfikować z zewnątrz klasy. Oznaczenie ich jako final gwarantuje, że po ich inicjalizacji nie można ich zmienić.
- **Nie dostarczaj setterów: **Settery umożliwiają modyfikowanie pól. Aby zapewnić niezmienność, nie należy dostarczać metod umożliwiających zmianę wartości pól po ich inicjalizacji.
1
Q
Jakie są dwie główne kategorie klas zagnieżdżonych w Javie?
A
- Statyczne klasy zagnieżdżone (static nested classes)
- Wewnętrzne klasy (inner classes)
2
Q
Cechy static nested classes
A
- Są zdefiniowane jako static wewnątrz klasy zewnętrznej.
- maja dostęp tylko do zmiennych static
- mają dostęp nawet do private
- Mogą istnieć niezależnie od instancji klasy zewnętrznej.
- może mieć wszystkie modyfikatory dostępu
` OuterClass.NestedClass nestedObject = new OuterClass.NestedClass(10);`
3
Q
Cechy inner classes
A
- Są zdefiniowane wewnątrz klasy zewnętrznej bez modyfikatora static.
- Mają dostęp do zmiennych instancji klasy zewnętrznej.
- nawet do private
- Nie mogą istnieć bez instancji klasy zewnętrznej.
- musisz storzyć obiekt klasy zewnętrznej
4
Q
Zastosowanie klas zagnieżdzonych
A
-
Grupowanie klas, które są używane tylko w jednym miejscu.
* Zwiększenie enkapsulacji. - Prowadzenie bardziej czytelnej i utrzymywalnej struktury kodu.
- Możliwość korzystania z wielokrotnego dziedziczenia w Javie poprzez kombinację klasy zewnętrznej i wewnętrznej.
5
Q
Czym jest klasa anonimowa ?
A
- klasa wewnętrzna
- brak nazwy - instancjonowane przy użyciu konstruktora klasy nadrzędnej lub interfejsu, który implementuj
- Zastosowanie na miejscu: Klasy anonimowe są zwykle używane tam, gdzie są zdefiniowane i instancjonowane. Nie można ich używać w innych miejscach.
- dostęp do zmiennych otaczającego zakresu: Klasy anonimowe mają dostęp do finalnych lub efektywnie finalnych zmiennych z otaczającego zakresu.
- Ograniczone dziedziczenie: Klasa anonimowa może rozszerzać dokładnie jedną klasę lub implementować dokładnie jeden interfejs.
6
Q
Zastosowanie klas anonimowych
A
- Prosta implementacja interfejsów gdy implementacja jest używana tylko raz.
- Rozszerzanie klas: z jednoczesnym dodawaniem dodatkowych metod lub nadpisywaniem istniejących.
- Zwięzłość: - szybkie tworzenie obiektów bez potrzeby definiowania pełnej klasy w osobnym miejscu
7
Q
Czym jest klasa lokalna ?
A
- klasa zagnieżdżona zdefiniowana wewnątrz bloku kodu
- ## nie mogą być ani private, public, protected - są dostępnie wyłacznie w obrębie bloku
8
Q
Cechy klasy lokalnej
A
- dostępna tylko w obrębie bloku, w którym została zdefiniowana.
- dostęp do zmiennych instancyjny outer class
- dostęp do finalnych pól w bloku w którym jest zdefiniowany
- nie może posiadać modyfikatorów dostępu na poziomie klasy, ale jej członkowie mogą.
- Ograniczenia: Klasy lokalnenie mogą być statyczne i nie mogą zawierać statycznych członków, chyba że są to stałe.: dostępna tylko w obrębie bloku, w którym została zdefiniowana.
9
Q
Zastosowanie klas lokalnych
A
- Chcemy ukryć implementację klasy w określonej metodzie.
- Potrzebujemy dostępu do zmiennych lokalnych metody w klasie.
- Chcemy zwiększyć czytelność i organizację kodu poprzez przeniesienie klasy blisko miejsca jej użycia.