1

Подскажите, пожалуйста, по поводу создания объекта в Java.

К примеру, имеется такая запись:

Computer pc = new Computer(); 

Это значит, что переменной pc типа Computer присваивается ссылка на класс Computer.

Не могу поянть одного: что значит "тип Computer"? Что он хранит? (К примеру есть int, который хранит целочисленные значения, boolean, который хранит логчиеские, а что хранят такие типы?)

В чем логика такого ообъявления? Почему не пишется просто pc = new Comuter; ? Зачем указывать тип?

Nofate
  • 34,603
Ignat
  • 11
  • 1
    Как раз наоборот, вопрос тебе: почему ты думаешь, что при объявлении int или boolean нужно указать тип, а при указании другого - не нужно? Почему это резко становится не нужным? – Алексей Шиманский Sep 22 '17 at 16:07
  • Ну а вообще можно написать Application app = new Computer(); где Computer унаследован от Application или IApp app = new Computer(); где IApp - интерфейс, который компьютерн имплементирует .... и это подведет тебя к теме ООП и полиморфизма в частности)) – Алексей Шиманский Sep 22 '17 at 16:09
  • Для чего может понадобиться такая запись ? Application app = new Computer();. Зачем ссылаться на дочерний класс? – Ignat Sep 22 '17 at 16:15
  • 1
    А для этого, юный падаван, тебе нужно почитать книги по Java – Алексей Шиманский Sep 22 '17 at 16:17
  • Спасибо за отзыв – Ignat Sep 22 '17 at 16:25

1 Answers1

1

В переменной pc у вас будет ссылка на начало некоторой области памяти в куче. Грубо говоря, чтобы виртуальная машина могла правильно работать с этой ссылкой, ей надо знать какого размера эта область и какие её части к каким полям относятся. Может это ссылка на объект содержащий одно поле типа int, а может объект содержащий 20 полей, часть из которых строки, а часть массивы чисел с плавающей точкой. Вот для этого и указывается тип ссылочной переменной.

  • А если взять пример: Computer pc = new Laptop (); (где Laptop - наследник Computer). Т.е. создается переменная pc, которая сслыается на класс Laptop. Данная переменная будет иметь размер класса Computer. Я правильно понимаю? – Ignat Sep 22 '17 at 16:24
  • Повторюсь, я предельно упростил объяснение. Опять же, если очень грубо, при обращении к ссылке типа Computer будет прочитана только часть данных относящихся к этому типу, без части относящейся к Laptop. – Sergey Gornostaev Sep 22 '17 at 16:30
  • Хорошо, спасибо – Ignat Sep 22 '17 at 16:42