Java 08.10.2023

This commit is contained in:
StNicolay 2023-10-08 18:00:42 +00:00
parent a5fa1d7749
commit 082000b21d

View File

@ -331,3 +331,98 @@ class Main {
}
}
```
#### Абстрактные классы
Абстрактные классы могут иметь абстрактные методы (без имплементации), но от них низя создать объект.
```Java
abstract class Car {
int speed;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
abstract int brake();
}
class Sedan extends Car {
@Override
int brake() {
return 5;
}
}
public class Main {
public static void main(String[] args) {
Car car = new Car(); // Низя. Класс абстрактный
Sedan sedan = new Sedan();
}
}
```
### Интерфейсы
Абстрактные классы для классов, которые имеют много общего, имеют близкую связть, а интерфейсы используются для тех, которые не имеют связи:
* Bird - абстрактный класс
* Flyable - интерфейс. Его могут имплементировать и птицы, и самолёты, и Карлсон
Отличия от классов:
* Нельзя создать экземпляр
* Не содержатся конструкторы
* Все методы абстрактные
* Все поля и *static* и *final*
* Интерфейс не расширяется классом, а реализуется
* Интерфейс может расширить множество интерфейсов
```Java
public interface Swimmable {
public void swim();
}
class Duck implements Swimmable {
public void swim() {
System.out.println("A duck is swimming");
}
}
```
### Классы обёртки
*Обёртка* - класс, хранящий внутри значение примитива. Эти классы содержат полезные методы и являются не изменяемыми
#### Автораспаковка, автоупаковка
```Java
int x = 5;
Integer y = x; // Автоупаковка
x = y; // Автораспаковка
```
Автоупаковка и автораспаковка не работает для массивов
## Коллекции
Основные виды:
* Set
* HashSet
* TreeSet
* SortedSet
* List
* ArrayList
* LinkedList
* Vector
* Stack
* Map
* HashMap
* TreeMap
* SortedMap
* Hashtable