Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: OOP - Třída se ktrou je možná pracovat jen přes interface

Aktivity
Avatar
iqbigbang
Člen
Avatar
iqbigbang:8.5.2016 15:53

Dobrý den,
existuje v Javě nějaký způsob jak vytvořit třídu, kterou nelze použít přímo ale jen pře interface který implementuje?

Odpovědět
8.5.2016 15:53
Say me, why not?
Avatar
Atrament
Tvůrce
Avatar
Atrament:8.5.2016 16:21

Jelikož interface nejde sám o sobě instanciovat, tak nevím jak si představuješ že by to mělo fungovat. Ale když uděláš

NejakyInterface objekt = new ImplementaceNejakehoInterfacu();

tak pak můžeš posílat objektu jenom ty zprávy, které jsou definované v interface.

 
Nahoru Odpovědět
8.5.2016 16:21
Avatar
coells
Tvůrce
Avatar
Odpovídá na iqbigbang
coells:8.5.2016 19:26

Ano, jeden ze způsobů jsou anonymní třídy.
Anonymní třída je dostupná pouze v kontextu své definice a přístup k ní je možný pouze přes interface.

public interface HelloFace {
    public void sayHi();
}

public class Program {

    private static HelloFace english() {
        class Hello implements HelloFace {
            public void sayHi() {
                System.out.println("hi");
            }
        }
        return new Hello();
    }

    private static HelloFace czech() {
        class Ahoj implements HelloFace {
            public void sayHi() {
                System.out.println("cau");
            }
        }
        return new Ahoj();
    }


    public static void main(String[] args) {
        HelloFace cz = Program.czech();
        HelloFace en = Program.english();

        cz.sayHi();
        en.sayHi();
    }
}
 
Nahoru Odpovědět
8.5.2016 19:26
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.