#java #inheritance #primitive
#java #наследование #примитив
Вопрос:
Точнее, является ли int частью класса Integer (урезанная версия или что-то в этом роде) или это что-то совсем другое?
Я знаю, что int — это тип значения, а Integer — ссылочный тип, но наследует ли int от Object в любом случае?
(Я предполагаю, что в этом отношении int, long, boolean и т. Д. Все Похожи. int был выбран просто для удобства)
Ответ №1:
-
Основные типы в Java не являются объектами и не наследуются от Object .
-
Поскольку Java 1.5 представила разрешенный автоматический блок между int и Integer (и другими типами).
-
Поскольку целые числа не являются объектами, которые нельзя использовать в качестве параметров универсального типа, например
T
, inlist<T>
Ответ №2:
Из «Примитивных типов данных»: «Примитивные типы — это специальные типы данных, встроенные в язык; они не являются объектами, созданными из класса». Это, в свою очередь, означает, что нет, int
не наследуется от java.lang.Объект каким-либо образом, потому что это делают только «объекты, созданные из класса». Рассмотрим:
int x = 5;
Для того, чтобы объект с именем x
наследовал от Object , у этого объекта должен быть тип. Обратите внимание, что я различаю x
его и то, что он называет. x
имеет тип, который есть int
, но названная вещь x
— это значение 5, которое само по себе не имеет типа. Это не что иное, как последовательность битов, которая представляет целое значение «5». В отличие от этого, рассмотрим:
java.lang.Number y = new java.lang.Integer(5);
В этом случае y
имеет тип Number , а имя y
объекта имеет тип Integer . Названная вещь y
является объектом. Он имеет отдельный тип независимо от y
или чего-либо еще.
Комментарии:
1. У меня есть сомнение — может ли метод, возвращаемый тип которого является an
Object
, на самом деле возвращатьсяint
? Если да, то как я могу получитьint
обратную связь изObject
вызывающей среды?2. @KaranChadha Вы должны опубликовать это как новый вопрос вместо комментария. Не забудьте проверить, задавался ли тот же вопрос ранее.
Ответ №3:
Примитивные типы не являются объектами, но хранятся непосредственно в любом контексте, в котором они необходимы. Если с ними нужно обращаться как с объектом, их можно заключить в целое число.
Комментарии:
1. Итак, вы говорите, что object = ссылочный тип?
2. @soandos: да. Все экземпляры класса в Java являются ссылочными типами.
Ответ №4:
Если вы говорите о Integer:
Класс Integer переносит значение примитивного типа int в объект. Объект типа Integer содержит единственное поле, тип которого — int .
Кроме того, этот класс предоставляет несколько методов для преобразования int в строку и строки в int, а также другие константы и методы, полезные при работе с int.
int не является объектом, это примитивный тип.
Комментарии:
1. Значит, он не наследуется от object ?
2. @soandos: он наследует из ничего . Он не может наследовать period, поскольку примитивы не являются ссылочными типами. Это похоже на простые типы C #.
3. В других языках структуры могут наследоваться, поэтому простого факта, что это примитив, недостаточно
4. @soandos — я не знаю ни одной языковой спецификации, которая вызывала бы структуры примитивных типов. Тип структуры — это сконструированный тип. Но в любом случае, обобщение понятий и терминологии с одного языка на другие не совсем разумно. Чтобы действительно понять язык, вам нужно понять, как он определяет свою терминологию.
5. У меня есть сомнение — может ли метод, возвращаемый тип которого является an
Object
, на самом деле возвращатьсяint
? Если да, то как я могу получитьint
обратную связь изObject
вызывающей среды?
Ответ №5:
- Объект имеет состояние и поведение
- состояние означает поля (переменные)
, например: велосипед (текущая скорость, текущая передача) - поведение означает методы для изменения этих полей, например: изменение текущей скорости с помощью методов
- Только представьте, можете ли вы изменить состояние int, если вы измените, вы могли бы сказать, что int является объектом. мы не можем изменить, чтобы он не был объектом