logo

Java Anonymous belső osztály

A Java anonymous belső osztály egy név nélküli belső osztály, amelyhez csak egyetlen objektum jön létre. Az anonim belső osztály hasznos lehet, ha egy objektumot bizonyos „extrákkal” hoz létre, például egy osztály vagy interfész túlterhelési metódusait anélkül, hogy ténylegesen alosztályoznia kellene egy osztályt.

Egyszerűen fogalmazva, egy névtelen osztályt névtelen belső osztálynak nevezünk a Java-ban. Akkor kell használni, ha felül kell írnia egy osztály vagy interfész metódusát. A Java Anonymous belső osztály kétféleképpen hozható létre:

  1. Osztály (lehet absztrakt vagy konkrét).
  2. Felület

Java névtelen belső osztály példa osztály használatával

TestAnonymousInner.java

 abstract class Person{ abstract void eat(); } class TestAnonymousInner{ public static void main(String args[]){ Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; p.eat(); } } 
Tesztelje most

Kimenet:

 nice fruits 

Adott kód belső működése

 Person p=new Person(){ void eat(){System.out.println('nice fruits');} }; 
  1. Létrejön egy osztály, de a nevét a fordító határozza meg, amely kiterjeszti a Person osztályt és biztosítja az eat() metódus megvalósítását.
  2. Létrejön az Anonymous osztály objektuma, amelyre 'p' hivatkozik, egy személy típusú referenciaváltozó.

A fordító által generált belső osztály

 import java.io.PrintStream; static class TestAnonymousInner extends Person { TestAnonymousInner(){} void eat() { System.out.println('nice fruits'); } } 

Java névtelen belső osztály példa interfész használatával

 interface Eatable{ void eat(); } class TestAnnonymousInner1{ public static void main(String args[]){ Eatable e=new Eatable(){ public void eat(){System.out.println('nice fruits');} }; e.eat(); } } 
Tesztelje most

Kimenet:

táblázatok létrehozása latexből
 nice fruits 

Adott kód belső működése

A kód mögött két fő feladatot lát el:

 Eatable p=new Eatable(){ void eat(){System.out.println('nice fruits');} }; 
  1. Létrejön egy osztály, de a nevét a fordító határozza meg, amely megvalósítja az Eatable felületet és biztosítja az eat() metódus megvalósítását.
  2. Létrejön az Anonymous osztály objektuma, amelyre 'p' hivatkozik, amely egy Eatable típusú referenciaváltozó.

A fordító által generált belső osztály

 import java.io.PrintStream; static class TestAnonymousInner1 implements Eatable { TestAnonymousInner1(){} void eat(){System.out.println('nice fruits');} }