Конкретен клас в Java

1. Въведение

В това кратко ръководство ще обсъдим термина „конкретен клас“ в Java .

Първо ще дефинираме термина. След това ще видим как се различава от интерфейсите и абстрактните класове.

2. Какво е бетонен клас?

Конкретният клас е клас, за който можем да създадем екземпляр, използвайки новата ключова дума .

С други думи, това е пълно изпълнение на неговия план . Бетонният клас е завършен.

Представете си например клас на кола :

public class Car { public String honk() { return "beep!"; } public String drive() { return "vroom"; } }

Тъй като всички негови методи са внедрени, ние го наричаме конкретен клас и можем да го създадем:

Car car = new Car();

Някои примери за конкретни класове от JDK са HashMap , HashSet , ArrayList и LinkedList .

3. Абстракция на Java срещу конкретни класове

Не всички типове Java обаче изпълняват всички свои методи. Тази гъвкавост, наричана още абстракция , ни позволява да мислим по-общо за домейна, който се опитваме да моделираме.

В Java можем да постигнем абстракция, използвайки интерфейси и абстрактни класове.

Нека да разгледаме по-добре конкретните класове, като ги сравним с тези други.

3.1. Интерфейси

Интерфейсът е план за клас . Или, с други думи, неговата колекция от неизпълнени подписи на методи:

interface Driveable { void honk(); void drive(); }

Имайте предвид, че той използва ключовата дума за интерфейс вместо клас.

Тъй като Driveable има неприложени методи, не можем да го създадем с новата ключова дума.

Но конкретни класове като Car могат да внедрят тези методи.

JDK предоставя редица интерфейси като Map , List и Set .

3.2. Абстрактни класове

Абстрактният клас е клас, който има неприложени методи, въпреки че всъщност може да има и двете:

public abstract class Vehicle { public abstract String honk(); public String drive() { return "zoom"; } }

Имайте предвид, че ние маркираме абстрактни класове с ключовата дума abstract .

Отново, тъй като Vehicle има неприложен метод, honk , няма да можем да използваме новата ключова дума.

Някои примери за абстрактни класове от JDK са AbstractMap и AbstractList .

3.3. Бетонни класове

За разлика от тях, конкретните класове нямат неприложени методи. Независимо дали реализациите са наследени или не, стига всеки метод да има изпълнение, класът е конкретен.

Бетонните класове могат да бъдат толкова прости, колкото нашия пример за кола по-рано. Те могат също да реализират интерфейси и да разширяват абстрактни класове:

public class FancyCar extends Vehicle implements Driveable { public String honk() { return "beep"; } }

Класът FancyCar осигурява изпълнение за звук и наследява внедряването на устройство от Vehicle.

Като такъв той няма неприложени методи . Следователно можем да създадем екземпляр на клас FancyCar с новата ключова дума.

FancyCar car = new FancyCar();

Или просто казано, всички класове, които не са абстрактни, можем да наречем конкретни класове.

4. Обобщение

В този кратък урок научихме за конкретни класове и техните спецификации.

Освен това показахме разликите между интерфейсите и конкретни и абстрактни класове.