Avatar
iqbigbang
Člen
Avatar
iqbigbang:

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. května 15:53
Say me, why not?
Avatar
Atrament
Člen
Avatar
Atrament:

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  +1 8. května 16:21
Avatar
coells
Redaktor
Avatar
Odpovídá na iqbigbang
coells:

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  +2 8. května 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.