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

Конкретный класс в 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. Резюме

В этом коротком уроке мы узнали о конкретных классах и их спецификациях.

Кроме того, мы показали различия между интерфейсами и конкретными и абстрактными классами.