Можно ли создать экземпляр абстрактного класса Number в Java?

«Можно ли создать экземпляр абстрактного класса Number в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, напрямую создать экземпляр абстрактного класса java.lang.Number нельзя. Ключевое слово abstract запрещает использование оператора new с этим классом.

Number n = new Number(); // Ошибка компиляции: Number is abstract; cannot be instantiated

Для чего нужен класс Number? Это абстрактный базовый класс для всех классов-обёрток числовых примитивов. Он определяет общий контракт для преобразования числового значения в различные примитивные типы.

Как его использовать? Ссылке типа Number можно присвоить объект любого конкретного класса-наследника.

Примеры:

// Создание объектов конкретных классов-наследников
Number integerNum = Integer.valueOf(10);   // Целое число
Number doubleNum = Double.valueOf(3.14);   // Число с плавающей точкой
Number bigNum = new BigDecimal("123.456"); // Большое десятичное число

// Использование методов конвертации из Number
int intValue = integerNum.intValue();   // = 10
double dValue = doubleNum.doubleValue(); // = 3.14
byte bValue = integerNum.byteValue();   // = 10

Основные наследники Number: Integer, Long, Double, Float, Short, Byte, BigInteger, BigDecimal.