Конкретный класс в Java
1. Вступление
В этом кратком руководствеwe’ll discuss the term “concrete class” in Java.
Сначала дадим определение термину. Затем мы увидим, чем он отличается от интерфейсов и абстрактных классов.
2. Что такое конкретный класс?
A concrete class is a class that we can create an instance of, using the new keyword.
Другими словами, этоfull implementation of its blueprint. Конкретный класс завершен.
Представьте себе, например, классCar :
public class Car {
public String honk() {
return "beep!";
}
public String drive() {
return "vroom";
}
}
Поскольку все его методы реализованы, мы называем его конкретным классом и можем создавать его экземпляры:
Car car = new Car();
Некоторые примеры конкретных классов из JDK:HashMap, HashSet, ArrayList, and LinkedList.
3. Java абстракция против Бетонные классы
Not all Java types implement all their methods, though. Эта гибкость, также называемаяabstraction, позволяет нам думать в более общих терминах о предметной области, которую мы пытаемся моделировать.
В Java мы можем достичь абстракции, используя интерфейсы и абстрактные классы.
Давайте получше рассмотрим конкретные классы, сравнив их с другими.
3.1. Интерфейсы
An interface is a blueprint for a class. Или, другими словами, это коллекция невыполненных сигнатур методов:
interface Driveable {
void honk();
void drive();
}
Обратите внимание, что он использует ключевое словоinterface вместоclass.
ПосколькуDriveable - это нереализованные методы, мы не можем создать его экземпляр с помощью skeywordnew .
Но,concrete classes like Car can implement these methods.
JDK предоставляет ряд интерфейсов, напримерMap, List, and Set.
3.2. Абстрактные классы
An abstract class is a class that has unimplemented methods,, хотя на самом деле он может иметь оба:
public abstract class Vehicle {
public abstract String honk();
public String drive() {
return "zoom";
}
}
Обратите внимание, что мы помечаем абстрактные классы ключевым словомabstract.
Опять же, посколькуVehicle имеет нереализованный методhonk, мы не сможем использовать skeywordnew .
Некоторые примеры абстрактных классов из JDK:AbstractMap and AbstractList.
3.3. Бетонные классы
Напротив,concrete classes don’t have any unimplemented methods. Независимо от того, унаследованы реализации или нет, до тех пор, пока у каждого метода есть реализация, класс конкретен.
Конкретные классы могут быть такими же простыми, как наш предыдущий примерCar. Они также могут реализовывать интерфейсы и расширять абстрактные классы:
public class FancyCar extends Vehicle implements Driveable {
public String honk() {
return "beep";
}
}
КлассFancyCar предоставляет реализацию дляhonk и наследует реализациюdrive отVehicle.
As such, it has no unimplemented methods. Следовательно, мы можем создать экземпляр классаFancyCar с ключевым словомnew.
FancyCar car = new FancyCar();
Или, проще говоря, все классы, которые не являются абстрактными, мы можем назвать конкретными классами.
4. Резюме
В этом коротком уроке мы узнали о конкретных классах и их спецификациях.
Кроме того, мы показали различия между интерфейсами и конкретными и абстрактными классами.