Jak zaimplementować klasę anonimową w Javie



Ten blog dostarczy Ci szczegółowej i wszechstronnej wiedzy na temat klasy anonimowej w Javie z przykładami i czym różni się od zwykłej klasy.

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





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.

Anonymous-Class-In-Java



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.