Inheritance & Interfaces Flashcards
Předpis abstraktní třídy s metodou
public abstract class MyClass {
public abstract void m();
}
Co je abstraktní třída/metoda?
Třída obsahující aspoň jednu abstraktní metodu
Metoda bez implementace
Dědící třída ji musí implementovat
Kolik smí třída rozšířit tříd a implementovat interface?
Rozšířit 1, implementovat kolik chce
Předpis interface s metodou
public interface Ifc {
public void method();
}
Druhy inner class
Static - pro tridu
Member - pro instanci
Local - v metode
Anonymous - inline implementace / rozsireni ifc/class
Modifikatory viditelnosti tridy
private - jen ja a moje inner classy
default (=nepise se) - vsichni v mem pkg
protected - vsichni v mem pkg a moji potomci
public - vsichni (v modulu)
Jak se vytvori instance staticke tridy Nested bydlici ve tride Outer
Outer.Nested nested = new Outer.Nested();
Trida Outer obsahujici statickou tridu Nested.
Kdo vidi private veci tridy Nested?
Jak lze takovou tridu s privatnim konstr. instanciovat?
Nested, Outer
Outer.Nested x = Outer.createNestedInstance();
Trida Outer obsahujici statickou tridu Nested.
Kdo vidi private veci tridy Outer?
Outer, Nested
Outer, Nested take, ale jen staticke
vytvareni member inner class
nejprve se musi vytvorit instance outer class
local inner class - hranice existence, jake promenne muze pouzit
existuje jen uvnitr metody
muze pouzit promenne a parametry metody, jen pokud jsou final / efektivne final
Co je efektivne finalni promenna?
Hodnota se priradi jednou a nikdy se nezmeni
Co je functional interface?
Syntax
Ma prave jednu metodu k implementaci
Muze obsahovat i dalsi cleny
nepovinna anotace nad ifc: @FunctionalInterface
Anonymni trida - syntax
var anonymousClass = new ParentClass/Ifc() {
@Override
//method defitintion
}
Anonymni trida - inline syntax pro func. ifc: scitani
var anonymousClass = (a, b) -> a+b;