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;
Co je default implementation metoda v ifc?
Co je jeji opak?
Co muze udelat potomek? (3)
Je to metoda, ktera ma implementaci.
Abstraktni metoda
Nic - zdedi ji
Prepsat - vlastni implementace (povinne, pokud je ve vice mych ifc)
Deklarovat - jako abstraktni, jeho potomek ji musi prepsat
defaultni metoda - syntax
(public) (default) void method() { /* impl */ }
Co je lambda?
Syntax
- nechci menit hodnotu parametru v tele a vracim hodnotu
- vracim hodotu jedinym radkem
Inline implmentace funkcionalniho interface
(x, final String y, final var z) -> { action(x, y, z); return 0; }
(x, y, z) -> 0;
Method reference - syntax (3)
MyClass::method
myInstance::method
MyClass::new (=konstruktor)
public class MyClass {
public int method(String x) { return 0; }
}
preved na method reference
preved na lambdu
MyClass::method
(x) -> 0
Nested member class - syntax
public class Outer {
private/public class Inner {
…
}
}
Nested static class - syntax
public class Outer {
private/public static class Inner {
….
}
}
Local inner class - syntax
public void method(final var p, var q) {
class Inner {
…. // p je videt, q neni
}
Inner inner = new Inner();
}
Interface - jaka klicova slova jsou implicitni pro metodu v ifc, tedy byly vynechany?
void method();
public abstract