Anonimowe klasy wewnetrzne.

0

Czym sa owe klasy??

i jak sie maja do tego:

public class Main {
  public static void main(String[] args){

    Myzyk s1 = new Muzyk(){
		String spiewaj() {
			return "lalalala";
		}
    };

Czy to jest wykorzystanie w jakis sposob klasy anonimowej wewnetrznej??

Rozumiem ze klasy wewnetrzne sa niczym innym jak klasami w klasie:

public class rodzice{
    public class syn{
    }
}

No i teraz do czego to moze to sluzyc?
Jak uzyskac klase anonimowa?

0

oczywiscie zakladamy ze mamy klase astrakcyjna Muzyk z abstrakcyjna metoda spiewaj:)

0

Po prostu tworzysz definicję klasy na gorąco, z której jest robiony egzemplarz, a następnie zwraca referencję.

1

Jak masz:

abstract class Muzyk {

   abstract String spiewaj();
}

To byś musiał napisać:

class TROLOLOLO extends Muzyk {

   public String spiewaj() {

      return "lalalala";
   }
}

A to raczej nie ma sensu, żebyś trzymał definicję takiego gówna xD
Tak samo z interfejsami możesz : P

1

Dobra, dam Tobie jeszcze jeden przykład

interface WykonywaczDzialan {
   
   int dzialajNaTym(int a, int b);
}

Teraz możesz:

WykonywaczDzialan tenDodaje = new WykonywaczDzialan() { public int dzialajNaTym(int a, int b) {return a + b;}}
WykonywaczDzialan tenOdejmuje = new WykonywaczDzialan() { public int dzialajNaTym(int a, int b) {return a - b;}}

System.out.println(tenDodaje.dzialajNaTym(1,2));
System.out.println(tenOdejmuje.dzialajNaTym(1,2));
0

Twoj kod, rozumem ze jest przykladem anonimowej klasy wewnętrznej?? Czyli rożnica pomiędzy klasą wewnetrzną a anonimową to to, ze tu tworzymy tylko referencje i wywolujemy podczas tego metody z interface/abstracts?? Co mozemy jeszcze z tym zrobic??

0

Klasa wewnętrzna, jest to klasa, która jest po prostu jest zagnieżdżona w innej xD

0

Jeżeli umieszczasz definicję klasy w jakiejś klasie (nawet w metodzie, która wiadomo należy do jakiejś klasy), to jest ona klasą wewnętrzną. Nawet anonimowa...

0

no czyli to sa zupelnie dwie inne rzeczy :) Dzieki, wreszcie jakos to widze.

0

A klasa anonimowa, jest anonimowa, bo nie ma imienia, więc nie możesz używać jej imienia bo go nie ma, i tyle xD
(Tzn. w kodzie, bo normalnie taki pliczek z dziwną nazwą będziesz mieć jak skompilujesz)

1 użytkowników online, w tym zalogowanych: 0, gości: 1