Klasy anonimowe pozwalają na pisanie małego kodu i pozwalają jednocześnie deklarować i tworzyć instancje. Te klasy nie mają nazw, jest używane, gdy chcesz użyć dowolnej klasy tylko raz. Jest to ważny aspekt programowania w języku Java. Rozumiemy, czym jest klasa anonimowa w Javie w następującej kolejności:
- Deklarowanie klas anonimowych
- Składnia klasy anonimowej w Javie
- Sposoby tworzenia anonimowych klas w Javie
- Różnica między klasą zwykłą i anonimową
Deklarowanie klas anonimowych
Zwykle tworzymy klasę, tj. Deklarujemy klasę, ale klasy anonimowe są wyrażeniami, co oznacza, że definiujemy klasę anonimową w innej wyrażenie . Krótko mówiąc, anonimowa klasa wewnętrzna jest klasą bez nazw i tworzony jest tylko jeden obiekt.
Klasa anonimowa jest przydatna, gdy musimy stworzyć instancję obiektu z przeciążaniem metod klasy lub interfejsu bez tworzenia podklasy klasy.
Anonimowość można utworzyć na dwa sposoby:
java deklaruje tablicę obiektów
- Klasa (może być również abstrakcyjna)
- Berło
W klasie anonimowej możemy zadeklarować:
- Pola
- Dodatkowe metody
- Inicjatory instancji
- Zajęcia lokalne
Składnia klasy anonimowej w Javie
Składnia klasy anonimowej jest podobna do konstruktora, z wyjątkiem tego, że w bloku znajduje się definicja klasy, jak pokazano w poniższym fragmencie:
// AnonymousClass = interfejs, klasa abstrakcyjna / konkretna. AnonymousClass t = new AnonymousClass () {// metody i pola public void someMethod () {// kod jest tutaj}}
Spójrzmy na następujący przykład:
Poniższy przykładHelloAnonymousClass
, używa anonimowych klas w instrukcjach inicjalizacji zmiennych lokalnychprzywitać kogoś
ale używa lokalnej klasy do inicjalizacji zmiennejgreetWorld
:
public class HelloAnonymousClass {interface HelloWorld {public void sayHello () public void sayHelloTo (String someone)} public void sayHello () {class GreetWorld implementuje HelloWorld {String name = 'world' public void sayHello () {sayHelloTo ('world')} public void sayHelloTo (String Someone) {name = someone System.out.println ('Hello' + name)}} HelloWorld greetWorld = new GreetWorld () HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello ( ) {sayHelloTo ('Jon')} public void sayHelloTo (String some) {name = some System.out.println ('hola' + name)}} greetWorld.sayHello () greetSomeone.sayHelloTo ('Doe')} public static void main (String ... args) {HelloAnonymousClass myApp = new HelloAnonymousClass () myApp.sayHello ()}}
Jak widzieliśmy, klasa anonimowa jest wyrażeniem, składnia jest podobna do konstruktora, z wyjątkiem tego, że w bloku znajduje się definicja klasy. Rozważmy instancję obiektu greetSomeone:
HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello () {sayHelloTo ('Jon')} public void sayHelloTo (String some) {name = some System.out.println ('hola' + name) }}
Klasa anonimowa składa się z następujących elementów:
- nowy operator.
- Może implementować interfejs lub rozszerzać klasę. Jak w powyższym przykładzie, implementuje interfejs.
- Zawiera nawiasy, tak jak zwykłe klasy, w celu przekazania argumentów do konstruktora.
- Zawiera treść, która zawiera deklaracje metod. Deklaracje nie są dozwolone.
Klasa anonimowa powinna być częścią instrukcji.
W powyższym przykładzie anonimowe wyrażenie klasy jest częścią instrukcji, która jest inicjowana przezprzywitać kogoś
.
Sposoby tworzenia anonimowych klas w Javie
Istnieją 3 sposoby tworzenia klasy wewnętrznej w Javie
- Rozszerzając klasę
Możemy stworzyć anonimową klasę wewnętrzną poprzez rozszerzenie innej klasy, przypuśćmy, że musimy stworzyć wątek przy użyciu klasy Thread, możemy stworzyć anonimową klasę wewnętrzną zamiast tworzyć osobną klasę.
// Program do zilustrowania klasy Anonymous Inner poprzez rozszerzenie innej klasy AnonymousThreadClass {public static void main (String [] args) {// Anonymous Inner class, która rozszerza klasę Thread t = new Thread () {public void run () {System .out.println ('Dziecko!')}} t.start () System.out.println ('Rodzic!')}}
Wynik:
Rodzic!
Dziecko!
- Wdrażając interfejs
Możemy również stworzyć anonimową klasę wewnętrzną, implementując interfejs. Teraz, gdy stworzyliśmy klasę wewnętrzną, rozszerzając klasę w podobny sposób, możemy stworzyć klasę, która implementuje interfejs.
// Program do zilustrowania klasy Anonymous Inner poprzez implementację klasy interfejsu AnonymousThreadClass {public static void main (String [] args) {// Anonymous Inner class implementująca interfejs Runnable r = new Runnable () {public void run () {System.out .println ('Dziecko!')}} Wątek t = nowy Wątek (r) t.start () System.out.println ('Rodzic!')}}
Wynik:
Rodzic!
jak zainstalować php w systemie Windows
Dziecko!
- Jako argument dla metody / konstruktora
Aby zrozumieć składnię, spójrzmy na poniższy przykład:
// Program do zilustrowania klasy Anonymous Inner za pomocą argumentu class AnonymousThreadClass {public static void main (String [] args) {// Klasa anonimowa z argumentem konstruktora Thread t = new Thread (new Runnable () {public void run () {System. out.println ('Dziecko!')}}) t.start () System.out.println ('Rodzic!')}}
Wynik:
Rodzic!
Dziecko!
podstawowe struktury danych w java
Różnica między zwykłą a anonimową klasą wewnętrzną
Możemy wdrożyć wiele interfejsów używając zwykłej klasy, ale z anonimową klasą wewnętrzną możemy zaimplementować tylko jeden interfejs.
Z klasą możemy rozszerzyć klasę a także zaimplementować wiele interfejsów, ale z anonimową klasą wewnętrzną możemy albo rozszerzyć klasę, albo zaimplementować interfejs, ale nie oba naraz.
Z anonimowym my nie można napisać konstruktora ponieważ anonimowa klasa wewnętrzna nie ma nazwy, a nazwa konstruktora powinna być taka sama jak nazwa klasy.
W tym artykule widzieliśmy, czym jest anonimowa klasa wewnętrzna i jak możemy ją utworzyć. Przeszliśmy przez składnię anonimowej klasy wewnętrznej, a także o tym, jak możemy utworzyć klasę anonimową na 3 sposoby i tym samym dotarliśmy do końca artykułu Anonymous Class in Java. Sprawdź przez Edureka.
Masz pytanie? Wspomnij o tym w sekcji komentarzy tego artykułu, a skontaktujemy się z Tobą tak szybko, jak to możliwe.