C# 08.10.2020
This commit is contained in:
155
Java/Java.md
155
Java/Java.md
@ -167,16 +167,167 @@ try {
|
||||
}
|
||||
```
|
||||
|
||||
### Throw
|
||||
### *throw*
|
||||
|
||||
```Java
|
||||
throw new Exception("Very important exception! Don't you dare not handle it");
|
||||
```
|
||||
|
||||
### Throws
|
||||
### *throws*
|
||||
|
||||
Позволяет кинуть ошибку вверх по стаку
|
||||
|
||||
```Java
|
||||
public static void main(String[] args) throws Exception {}
|
||||
```
|
||||
|
||||
## OOP
|
||||
|
||||
OOP - бяка, Java - OOP => Java - бяка
|
||||
|
||||
```Java
|
||||
public class Foo {
|
||||
int bar;
|
||||
string baz;
|
||||
|
||||
void fooBar() {
|
||||
System.out.println("FooBaz");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Модификаторы доступа
|
||||
|
||||
* public - везде
|
||||
* private - только внутри класса
|
||||
* protected - подклассы и сам класс
|
||||
|
||||
Если не указан, то применяется модификатор по умолчанию. Он делает переменную public в пределах данного пакета
|
||||
|
||||
### Конструктор и инициализатор
|
||||
|
||||
```Java
|
||||
public class Test {
|
||||
int age;
|
||||
int age2;
|
||||
int age3;
|
||||
|
||||
// Блок - инициализатор
|
||||
{
|
||||
age = 5
|
||||
}
|
||||
|
||||
// Конструктор
|
||||
public Test(int age2, int age3_input) {
|
||||
this.age2 = age2;
|
||||
age3 = age3_input; // Такое не делать, ибо не красиво
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Наследование
|
||||
|
||||
```Java
|
||||
public class Foo {}
|
||||
|
||||
public class Bar extends Foo {}
|
||||
```
|
||||
|
||||
Множественное наследование низя. Приватное не наследуется
|
||||
|
||||
#### *Override*
|
||||
|
||||
```Java
|
||||
class Foo {
|
||||
int foo() {
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
class Bar extends Foo {
|
||||
@Override
|
||||
int foo() {
|
||||
return 6;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Уровень видимости при *Override* не может понижаться. У переопределённого метода должен быть такой же интерфейс, как и у родителя
|
||||
|
||||
#### *super*
|
||||
|
||||
*super* позволяет обратиться к методам родительского класса
|
||||
|
||||
```Java
|
||||
class Foo {
|
||||
int foo() {
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
class Bar extends Foo {
|
||||
@Override
|
||||
int foo() {
|
||||
return super.foo();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### *final* при наследовании
|
||||
|
||||
*final* запрещает наследование
|
||||
|
||||
#### Наследование конструктора
|
||||
|
||||
```Java
|
||||
class Foo {
|
||||
int a, b;
|
||||
|
||||
Foo(int a, int b) {
|
||||
this.a = a;
|
||||
this.b = b;
|
||||
}
|
||||
}
|
||||
|
||||
class Bar extends Foo {
|
||||
int c;
|
||||
|
||||
Bar(int a, int b, int c) {
|
||||
// Тут super должен быть сверху, иначе ошибка
|
||||
super(a, b);
|
||||
this.c = c;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### *instanceof*
|
||||
|
||||
Позволяет проверить, создан ли объект на основе какого-то класса
|
||||
|
||||
```Java
|
||||
class Foo {
|
||||
int a, b;
|
||||
|
||||
Foo(int a, int b) {
|
||||
this.a = a;
|
||||
this.b = b;
|
||||
}
|
||||
}
|
||||
|
||||
class Bar extends Foo {
|
||||
int c;
|
||||
|
||||
Bar(int a, int b, int c) {
|
||||
// Тут super должен быть сверху, иначе ошибка
|
||||
super(a, b);
|
||||
this.c = c;
|
||||
}
|
||||
}
|
||||
|
||||
class Main {
|
||||
public static void main() {
|
||||
Bar bar = new Bar();
|
||||
System.out.println(bar instanceof Foo);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
Reference in New Issue
Block a user