Hack Bulgaria
github.com/HackBulgaria
Възможност да параметризираме клас по тип. Така имаме променлив тип, който се задава при създаване на инстанция от този клас. Пример - ArrayList<Integer>
0, 1 или повече. Всеки интерфейс, който имплементираме ни дава възможност нашият клас да има различно поведение.
Взимаме всичко public и protected от наследения клас. Така може да преизползваме код. Така може да постигнем и полиморфно поведение.
Object. От него идват методи катo toString() и equals()
Object. Тъй като всичко наследява Object, то всичко може да бъде Object.
Да. Нарича се method overring и се използва много.
Чрез super.methodName()
Чрез super.methodName()
Това е this–а на наследения клас. Чрез super може да викаме неща, специфични само за класа, който наследяваме.
Клас, от който не може да вдигаме инстанция. В него може да дефинираме абстракни методи, които трябва да бъдат имплементирани в първия не-абстрактен наследник.
Да. Това е и основната му разлика с Interface-a.
public static void main(String[] args) {
Path path = Paths.get("/home/radorado/code/Loki/README.md");
List<String> lines = Files.readAllLines(path);
System.out.println(lines);
}
В този код имаме checked exception. Имаме 2 варианта за справяне с проблема.
public static void main(String[] args) throws IOException {
Path path = Paths.get("/home/radorado/code/Loki/README.md");
List<String> lines = Files.readAllLines(path);
System.out.println(lines);
}
Маркираме метода, че МОЖЕ да хвърли този вид изключение. Който вика метода, трябва да се справи по някакъв начин с него.
public static void main(String[] args) {
Path path = Paths.get("/home/radorado/code/Loki/README.md");
List<String> lines = null;
try {
lines = Files.readAllLines(path);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(lines);
}
try {
// some code that throws exception
} catch (Exception e) {
// do something with exception
}
try {
// some code that throws exception
} catch (ExceptionType1 e) {
// do something with exception
} catch (ExceptionType2 e) {
// do something with exception
} ... catch (ExceptionTypeN e) {
// do something with exception
}
Може да имаме повече от 1 catch block - хващайки различни типове exceptions. catch-а се извършва по ред на дефиниране на catch блоковете.
try {
// some code that throws exception
} catch (Exception e) {
// do something with exception
} catch(IOException e) {
}
Това е невалиден код, защото първо хващаме по-общият вид, а след това по-конкретният вид. Трябва да са наобратно.
public static void main(String[] args) {
Path path = Paths.get("/missing/file");
List<String> lines = null;
try {
lines = Files.readAllLines(path);
} catch(Exception e) {
System.out.println(e.toString());
// java.nio.file.NoSuchFileException: /missing/file
} finally {
System.out.println("Finally");
// Finally
}
System.out.println(lines);
// null
}
finally block–а винаги се изпълнява.
By Hack Bulgaria