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. Обобщение
В този кратък урок научихме за конкретни класове и техните спецификации.
Освен това показахме разликите между интерфейсите и конкретни и абстрактни класове.