Информация по ООП, созданию объектов - PullRequest
1 голос
/ 28 февраля 2012

У меня проблема с пониманием ООП ...
Вот оно:

Иногда вы создаете объект с таким синтаксисом:

Object ObjectName = new Object();

Но иногда мы неЭто нужно сделать, как в Android:

Textview TextviewName;

Или в J2ME:

form formName;

Я уже искал его и получил некоторую информацию (но не уверен), что это из-застатический метод ... это правда?Я думаю, что это имеет отношение к полиморфизму .. это правда?Спасибо всем.

PS: Извините, если я сделал несколько ошибок, английский не мой родной язык: D

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Забудьте статические методы - они здесь не актуальны.Я бы рекомендовал смотреть на статические методы / элементы только тогда, когда вы действительно поняли, что такое объекты.

В Java вы можете сделать это:

Object object;

Точно так же, как вы можетесделайте это:

Object object = new Object();

В первом примере вы создаете ссылку, но вы не заполняете эту ссылку чем-либо, во втором примере вы создаете ссылку и заполняете ее новойобъект, для которого вы можете вызывать методы, изменять значения и т. д.

Если вы попытаетесь вызвать методы в первом объявлении, вы не сможете - там ничего нет.В зависимости от языка и от того, как вы его объявили, это может привести к ошибке во время выполнения или к ошибке времени компиляции (Java делает и то, и другое в зависимости от того, является ли это полем или локальной переменной.) Однако принцип одинаков для всех языков ОО,Вы не можете разыменовать (вызывать методы, поля и т. д.) ссылку, которая не была заполнена, потому что в действительности вы пытаетесь вызвать метод для чего-то, чего там нет.

1 голос
/ 28 февраля 2012

вы смешиваете разные языки, и это не относится ни к статическим методам, ни к полиморфизму .. я предлагаю прочитать хорошую книгу ООП, начиная с основы .. вы можете найти "Thinking in c ++" бесплатно в сети ..

1 голос
/ 28 февраля 2012

Ваше Textview не будет инициализировано. Любая попытка его использования приведет к ошибке NullReference. Чтобы объект действительно был создан, вы должны использовать новый синтаксис или функцию, которая возвращает действительный объект.

Однако это проблема, зависящая от синтаксиса, поэтому сначала решите, какой язык вы хотите изучать. Если бы ваш Textview был объявлен в C ++, он фактически создал бы объект в стеке.

...