2015-08-01 5 views
1

Какое значение имеет смысл в смысле программирования? Пожалуйста, объясните на примере. Кроме того, в чем смысл следующих строк?Значение по умолчанию

Я пишу код ниже:

MyClass obj; 

Теперь я говорю, что «obj есть ссылка на экземпляр MyClass

Пока я говорю выше, я не могу понять смысл строки «ссылка на экземпляр MyClass». Означает ли это, что obj является ссылкой на объект MyClass?

+0

Я думаю, что вы забыли разместить свой код. – pushkin

+0

Нет ... Я упомянул код жирным шрифтом ... его MyClass obj; –

+0

Когда я делаю 'var x = new Something();' I * instantiate * a 'Something'. Объект *, обозначенный * переменной' x', является * экземпляром * экземпляра 'Something', который я * создавал *. Возможно, у меня есть другие экземпляры * того же класса по другим переменным. –

ответ

0

Когда вы делаете что-то вроде MyClass obj = new MyClass(), вы создаете экземпляр.

OBJ является ссылка на экземпляр MyClass

Возможно, это самый правильный способ сказать, но в просторечии, я бы просто сказать, что obj является экземпляром класса MyClass.

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

пример или однократное возникновение чего-либо.

MyClass obj1 = new MyClass(); 
MyClass obj2 = new MyClass(); 

obj1 и obj2 являются экземплярами класса, так как они просто появление этого.

Мы говорим «ссылка», потому что переменная - это просто символ, который ссылается на фактический экземпляр. Например, когда int x = 5, x не является технически 5, это просто символ, который ссылается на это значение.

+0

'obj1 и obj2 являются экземплярами класса, так как они просто являются его появлением.' Не для класса. Это ссылки на экземпляры класса –

+0

. Объясняет ли это мое объяснение в конце? Я начал с упрощения, а затем объяснил, почему мы говорим «ссылка». Или я должен переписать ответ? – pushkin

3

«Экземпляр» (класса) - это просто еще один способ сказать «объект».

2

Если у вас есть два яблока на прилавке, каждый экземпляр яблока. Если у вас есть программа с тремя переменными с номерами 1, 2 и 3, каждая переменная является экземпляром целого числа.

Экземпляр - это только конкретная версия абстрактной вещи. Когда вы создаете класс и создаете объект из этого класса, объект является одним экземпляром. Если вы делаете три объекта из своего класса, у вас есть три экземпляра.

3

Класс: В классе-парадигме, такой как Java, класс является шаблоном. Это серия инструкций для операционной среды, которые позволяют ей создавать и использовать объекты. Класс определяет его членов в файле определения.Члены класса в Java являются его:

  • поля: переменные, которые хранят переменные, которые составляют состояние класса

  • методы: определения функций, которые определяют поведение, охарактеризовать класс

  • вложенные классы: класс может определить другие классы внутри

  • вложенные интерфейсы: класс может также определить интерфейсы внутри него

Instance: Экземпляр представляет собой фактическое представление класса. Это представление в памяти можно назвать либо объектом, либо экземпляром класса (или, проще говоря, просто экземпляром).

Чтобы сделать это более конкретным, давайте посмотрим на класс MyClass:

public class MyClass { 
    private int myField1; 
    private String myField2; 

    public MyClass(int f1, String f2) { 
     this.myField1 = f1; 
     this.myField2 = f2; 
    } 
    : 
    : 
} 

MyClass является классом, который определяет два экземпляра поля, которые содержат информацию о состоянии каждого MyClass объекта, который создается (myField1 и myField2). Он также определяет конструктор , который инструктирует Java о том, как построить объект MyClass. Здесь конструктор принимает два параметра и использует их для инициализации полей экземпляра.

Этот код:

MyClass obj = new MyClass(7, "Hello"); 

Это утверждение конкретизирует новый экземпляр MyClass объекта с помощью конструктора MyClass (Int, String). Созданный экземпляр будет иметь myField1 = 7 и myField2 = "Hello". Наконец, ссылка, которая указывает на объект, который был создан, присваивается переменной obj. В Java все объекты: ссылочные типы. Объект никогда не может быть сохранен в переменной. Вместо этого в переменной сохраняется указатель (или ссылка) на местоположение объекта в памяти.

TLDR: Класс является шаблоном для группы связанных объектов. Экземпляр - это фактическое представление класса, построенного с использованием его шаблона.

0

Проиллюстрируем все это не оставаясь слишком абстрактно:

  • Класс определяет концепцию.
  • Экземпляр - это конкретное, реальное воплощение этой концепции.

например.

  • Клавиатура что-то, где я могу нажать буквы (понятие)
  • Конкретные клавиатуры я печатаю этот ответ на это конкретное, реальное воплощение клавиатуры (экземпляр)

Когда вы сказать:

class MyClass { 
    void method1() { ... } 
} 

вы определяете, как объект определяется MyClass выглядит и ведет себя

Когда вы сделать:

MyClass obj; 

Вы на самом деле создать объект, соответствующий этому определению

0

Экземпляр просто объект. Скажем, у вас есть следующие:

class Car 
{ 
    int nWheels; 
} 

Car c = new Car(); 

В этом Java сниппета, у вас есть класс Car и создаем переменную c, которая является ссылкой на Car. Теперь в популярных языках, таких как C++ и Java, ключевое слово new означает «создать экземпляр (aka object) данного класса и дать мне ссылку », поэтому c является ссылкой. Когда переменная является ссылкой, это в основном просто адрес памяти, где фактический экземпляр/объект находится в памяти (ссылки на самом деле больше, но вы можете думать об этом таким образом), а не сам фактический экземпляр. Из-за этого вы можете иметь несколько ссылок на один и тот же объект, изменить один, и все они меняются.

Предположим, у вас есть код

Car car1 = new Car(); 
Car car2 = new Car(); 

тогда как car1 и car2 являются ссылки на отдельные экземпляры, так как каждый из них используется конструктор. Но если вы сделали,

car2 = car1; 

затем car2 и car1 все еще обе ссылки, но оба они ссылаются на тот же экземпляр (объект, созданный по линии Car car1 = new Car();, и ничто не ссылается на объект, созданный в строке Car car2 = new Car();.