2016-02-29 5 views
-1

Noob здесь, с некоторыми вопросами об основных вещах в Java.При создании ссылочной переменной, что мы точно делаем?

Если у нас есть класс Person с конструктором (также Person), мы можем создать ссылочную переменную как это:

Person johnny = new Person(); 

Допустим, мы только что создали в классе People объекта, johnny. Он содержит «адрес», где хранятся объект и его значения, в отличие от объектов типов примитивов (например, int x = 5; имеет значение 5, johnny - «ссылка» на значение - если я понял вещи правильно)

первое слово:.Person является класс/тип (< - отредактирован здесь), но:

  • Что класс/тип делать? Что это значит? Возможно: что делает тип, если это не «примитивный тип»?

второе слово:johnny является ссылочной переменной, типа Person. - Если я что-то не хватает, пожалуйста, просветите меня :)

3-е слово:new это только говорится, что мы создаем новый объект.

четвёртое слово: второй Person:

  • Это объект, который мы создаем?
  • Является ли это конструктором или классом, на который мы ссылаемся?

ТАКЖЕ:

  • значение (адрес), что переменная имеет в виду все после знака равенства? Адрес new Person?

LASTLY: Полиморфизм. Так что, если у нас есть подкласс Adult, который проходит супер-класса Person, то мы можем сделать это:

Person amanda = new Adult(); 
  • Что мы теперь делаем?
  • Is amanda Тип класса Лицо и относится к объекту в классе Adult?

Спасибо за вашу помощь :)

+0

У вас может быть только ссылка на объект, поэтому тип ссылки является верхним пределом в иерархии класса, которым он может быть. –

+0

прочитал достойный учебник по основным принципам OO –

ответ

-1

первого слова: «Лицо» является типом класса

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

Другим примером может быть

int a = 1;  

При объявлении переменной или параметра в Java, имя предшествует типу.

второе слово: 'джонни' является ссылкой переменной типа Person

Это верно. Здесь вы указываете свою переменную johnny. И его тип - это то, что вы указали для него прямо перед именем.

3-е слово: «новое» это только говорит о том, что мы создаем новый объект.

new означает, что мы вызываем конструктор (класса, следующего за new). Именно так вы создаете объекты на Java.

четвёртое слово: второй «Человек

Это имя класса, который вы вызываете конструктор. Это всегда будет возвращать новый экземпляр именно этого класса (а не подкласса). Для данного класса может быть более одного конструктора, они различаются параметрами и типами (в вашем случае, конструктором без каких-либо параметров).

Значение (адрес), на которое ссылается переменная, - это все после знака равенства? Адрес «Новое лицо»?

new Person() возвращает ссылку на экземпляр вновь созданного объекта. Он будет сохранен в вашей переменной johnny.

LASTLY: Полиморфизм.

Ваш класс Adult является подклассом Person. Это означает, что вы можете использовать его во всех ситуациях, где требуется Person. В частности, вы можете назначить его переменной типа Person (например, johnny) и вызвать все методы Person.

+0

Это было полезно. Мне нужен был конкретный ответ для этого точного примера. – yacico

+0

О пользователе Polym: Теперь я понимаю, что переменная ссылается на объект (или я должен сказать экземпляр здесь?) В 'adult'. Но мне нужно уточнить, что делает класс («тип») «Человек»? Я думал, что он задает тип переменной (_огда переменная может быть установлена ​​в тип, который на самом деле является классом или как класс может использоваться как тип, запутывает_). – yacico

+0

Каждая переменная или другая часть данных в Java имеет тип. Существует два типа типов: примитивные типы (например, 'int') или типы объектов. Последние организованы в иерархии классов, и это доступно для пользователя. Каждый «класс», который вы пишете, определяет новый тип (который будет подтипом другого класса, а «java.lang.Object» - базовым типом для всех классов). – Thilo

-1

Это слишком смутно для слов.

При создании ссылочного типа, что мы точно делаем?

Ничего. На Java такой операции нет.

Когда у нас есть класс (или супер-класса, я вернусь к этому) Человек с конструктором (также Person), мы можем создать ссылочный тип, как это:

Нет, вы не может. Здесь вы создаете ссылку . Вы являетесь не, создавая тип, не говоря уже о «ссылочном типе».

Person johnny = new Person(); 

Мы только что создали в новом классе людей (например) объекта, Джонни.

Я не вижу доказательств класса People, но я возьму ваше слово за это.

Он содержит «адрес» в котором объект и его значения сохраняются, в отличие от объектов примитивов типа делают (например, INT х = 5, имеет значение 5, джонни является «ссылка» на значение - если я правильно понял.)

Исправить.

1st word: 'Person' is a class type, but: 

Нет, это не так. Person - класс. Период.

Что делает тип класса? Что это значит?

Ничего, потому что его не существует. A класс, с другой стороны, является своего рода шаблоном для построения объектов from, который определяет его элементы данных и какой код можно вызывать на нем.

Возможно: что делает тип, если он не является «примитивным типом»?

Он расширяет систему типов за пределами примитивных типов, таким образом, который может быть мотивированными о и вычисленном посредством наследования, реализации интерфейса, и принцип substituion Лиск (г.о.).

Второе слово: «johnny» является ссылочной переменной, типа Person. - Если у меня что-то не хватает, пожалуйста, просветите меня :)

Исправить.

3-е слово: «новое» это только говорит о том, что мы создаем новый объект.

Исправить.

4-е слово: второе Person: Это объект, который мы создаем?

Это класс (или 'type', если вы настаиваете) на объект, который мы создаем.

Этот конструктор или класс мы имеем в виду?

Оба. Аргументы или их отсутствие определяют, какой конструктор вызывается. Имя конструктора совпадает с именем класса, по правилам Java.

Значение (адрес), на которое ссылается переменная, - это все после знака равенства? Адрес «Новое лицо»?

Эта переменная относится к объекту , который был создан. В Java нет понятия «адрес».

LASTLY: Полиморфизм. Так что, если у нас есть подклассы «для взрослых», которая проходит супер-класса «человек», то мы можем сделать это:

Person amanda = new Adult(); 

Что мы теперь делаем?

Вы создаете объект типа Adult и обращаясь к нему через ссылку типа Person, который может добиться успеха только в том случае Person является базовый класс или интерфейс реализован Adult.

Является ли 'Amanda' типа класса Person

'Amanda' является ссылкой типа/класса Person.

и объект в классе «Взрослый»?

amanda не является объектом вообще. Объект , который он ссылается на, является объектом класса Adult.

+0

О, спасибо: Я случайно написал ссылочный тип вместо ссылочной переменной. Я исправил это. – yacico

+0

Я тоже слишком быстро работал с 'amanda' - как я уже упоминал, эталонная переменная не является объектом. Также исправлено. – yacico

+0

О полиморфизме: теперь я понимаю, что ссылочная переменная относится к объекту, созданному в классе, указанном после 'new', но не могли бы вы уточнить, что делает класс (« type »)' Person', чем? Я думал, что он задает тип переменной (_how может быть задана переменная типа, которая на самом деле является классом или как класс может использоваться как тип confusing_) – yacico

Смежные вопросы