Ответ
Все числовые классы-обертки (Integer, Long, Double, Float, Short, Byte) наследуются от абстрактного класса java.lang.Number.
Назначение класса Number:
Он служит базовым типом для всех числовых оберток и предоставляет абстрактные методы для преобразования значения объекта в примитивные типы.
Сигнатура ключевых методов класса Number:
public abstract class Number {
public abstract int intValue();
public abstract long longValue();
public abstract float floatValue();
public abstract double doubleValue();
public byte byteValue() { return (byte) intValue(); } // Реализация по умолчанию
public short shortValue() { return (short) intValue(); } // Реализация по умолчанию
}
Практический пример использования полиморфизма с Number:
import java.util.ArrayList;
import java.util.List;
public class NumberExample {
public static void main(String[] args) {
// Коллекция может хранить разные числовые типы
List<Number> numbers = new ArrayList<>();
numbers.add(new Integer(10)); // Integer is-a Number
numbers.add(new Double(3.14)); // Double is-a Number
numbers.add(new Long(100L)); // Long is-a Number
// Обход и преобразование к общему типу double
double sum = 0.0;
for (Number num : numbers) {
sum += num.doubleValue(); // Используем метод из класса Number
}
System.out.println("Sum: " + sum); // Вывод: Sum: 113.14
}
}
Важно: Класс Character и Boolean НЕ наследуются от Number, так как они не представляют числовые значения.