Разница между классами, объектами и экземплярами
Что такое класс, объект и экземпляр в Java?
14 ответов:
Java (и любой другой язык программирования) моделируется в терминах типы и значения. На теоретическом уровне, а стоимостью - это представление для некоторого количества информации, а тип - это набор ценностей. Когда мы говорим значение X пример типа Y, мы просто говорим, что X является членом набора значений, который является типом Y.
Так вот что на самом деле означает термин "экземпляр": это описывает отношения не вещь.
система типов языка программирования Java поддерживает два типа, примитивные типы и ссылка типа. Ссылочные типы далее делятся на классы и типы массива. На Java объект является экземпляром ссылочного типа.
объект-это экземпляр класса или массив. (JLS 4.3.1)
это теоретическое представление типа.
на практике большинство разработчиков Java рассматривают слова "экземпляр" и "объект" как синонимы. (И это включает меня, тогда я пытаюсь объяснить что-то быстро.) И большинство разработчиков используют слово "значение", а не" экземпляр " для обозначения экземпляра примитивного типа.
A класс это чертеж, который вы используете для создания объекты. Объект-это экземпляр класса-это конкретная "вещь", которую вы сделали, используя определенный класс. Итак, "объект" и "экземпляр" - это одно и то же, но слово "экземпляр" указывает на отношение объекта к его классу.
это легко понять, если посмотреть на пример. Например, предположим, что у вас есть класс
House
. Ваш собственный дом является объектом и является экземпляр классаHouse
. Дом вашей сестры-это другой объект (другой экземпляр классаHouse
).// Class House describes what a house is class House { // ... } // You can use class House to create objects (instances of class House) House myHouse = new House(); House sistersHouse = new House();
класс
House
описывает понятие того, что такое дом, и есть конкретные, конкретные дома, которые являются объектами и экземплярами классаHouse
.Примечание: это точно так же, в Java, как и во всех объектно-ориентированных языков программирования.
класс в основном является определением и содержит код объекта. Объект-это экземпляр класса
например, если вы говорите
String word = new String();
класс-это класс String, который описывает слово объекта (экземпляра).
при объявлении класса память не выделяется, поэтому класс является просто шаблоном.
при объявлении объекта класса выделяется память.
Мне нравится объяснение Йеспера в непрофессиональных терминах
импровизируя примеры из ответа Йеспера,
class House { // blue print for House Objects } class Car { // blue print for Instances of Class Car } House myHouse = House new(); Car myCar = Car new();
myHouse и myCar-это объекты
также является экземпляром дом (относится объект-также в своем классе-дом) в mycar является экземпляром автомобиль
короче
" мой дом-это экземпляр на класс дом", что то же самое, что сказать "мой дом-это объект of тип дом"
класс-это тип данных, вы используете этот тип для создания объекта.
экземпляр логичен, но объект является физическим средством занимает некоторую память.
мы можем создать экземпляр абстрактного класса, а также интерфейс, но мы не можем создать
объект для тех.объект является экземпляром класса и экземпляр означает представителя класса I. E объекта.
экземпляр относится к Ссылка на объект.
объект фактически указывает на адрес памяти этого экземпляра.
вы не можете передать экземпляр над слоями, но вы можете передать объект над слоями
вы не можете хранить экземпляр, но вы можете хранить объект
один объект может иметь более одного экземпляра.
экземпляр будет иметь как определение класса и объекта определение, где как в объекте он будет иметь только определение объекта.
синтаксис объекта:
Classname var=new Classname();
но например creation он возвращает только указатель, ссылающийся на объект, синтаксис:
Classname varname;
в java объекты создаются в памяти кучи. Они требуют ссылки должны быть указаны и использованы в нашем приложении. Ссылка на область памяти объекта, с которым мы можем использовать объекты в нашем приложении. Короче говоря, ссылка-это не что иное, как имя переменной, которая хранит адрес объекта, созданного в ячейке памяти.
An
instance
это общий термин дляobject
. К вашему сведению,Object
- это класс.для Например,
Class A{ } A ref = new A();
для приведенного выше фрагмента кода ref является ссылкой на объект класса A, созданный в куче.
Если у вас есть программа, которая моделирует автомобили у вас есть класс для представления автомобилей, так что в коде можно сказать:
Car someCar = new Car();
someCar теперь является экземпляром класса Car. Если программа используется в ремонтной мастерской и someCar представляет ваш автомобиль в их системе, то ваш автомобиль является объектом.
Итак, автомобиль-это класс, который может представлять любой реальный автомобиль someCar-это экземпляр класса Car и someCare представляет один объект реальной жизни (вашей автомобиль)
однако экземпляр и объект очень часто используются взаимозаменяемо, когда дело доходит до обсуждения кодирования
любой вид данных ваш компьютер хранит и обрабатывает в своем самом основном представлении ряд битов. Способ интерпретации этих битов осуществляется с помощью типов данных. Типы данных могут быть примитивными или сложными. Примитивные типы данных, например int или Double. Они имеют определенную длину и определенный способ интерпретации. В случае целого числа, как правило, первый бит используется для знака, остальные используются для значения.
сложные типы данных могут быть комбинации примитивных и других сложных типов данных и называются "класс" в Java.
вы можете определить сложный тип данных PeopleName, состоящий из двух строк, называемых именем и фамилией. Каждая строка в Java-это другой сложный тип данных. Строки в ответ (вероятно) реализуются с использованием примитивного типа данных char, для которого Java знает, сколько бит они берут для хранения и как их интерпретировать.
при создании экземпляра типа данных вы получаете объект и ваши компьютеры резервируют некоторую память для него и запоминают его местоположение и имя этого экземпляра. Экземпляр PeopleName в памяти будет занимать пространство двух строковых переменных плюс немного больше для бухгалтерии. Целое число занимает 32 бита в Java.
сложные типы данных могут иметь методы, назначенные им. Методы могут выполнять действия над своими аргументами или над экземпляром типа данных, из которого вызывается этот метод. Если у вас есть два экземпляра PeopleName с именем p1 и p2 и вы вызываете метод p1.getFirstName (), он обычно возвращает имя первого лица, но не второго лица.
концепция классов и объектов заключается в инкапсуляции логики в единый блок программирования. классы схемы которых создаются объекты.
вот пример класса, представляющего автомобиль:
public class Car { int currentSpeed; String name; public void accelerate() { } public void park() { } public void printCurrentSpeed() { } }
Вы можете создать экземпляров на объект автомобиль, как это:
Car audi = new Car(); Car toyota = new Car();
Я взял пример от в этом уроке
класс
Он имеет логическое существование, т. е. память выделяется при его создании.
Это набор объектов.
класс можно рассматривать как схему элементов для создания объектов.
Он создается с помощью ключевого слова class
класс определяет методы и элементы данных, которыми будут обладать объекты.
объект
Он имеет физическое существование, т. е. память выделяется при его создании.
это экземпляр класса.
объект-это уникальная сущность, которая содержит элементы данных и функции-члены вместе на языке ООП.
Он создается с помощью нового ключевого слова
объект задает реализации методов и значения, которыми будут обладать члены данных в классе.
честно говоря, я чувствую себя более комфортно с Альфред блог определение:
объект: объекты реального мира разделяют 2 основные характеристики, состояние и поведение. Человека есть состояние (имя, возраст) и поведение (бег, сон). Автомобиль имеет состояние (текущая скорость, текущая передача) и состояние (применение тормоза, переключение передач). Программные объекты концептуально похожи на объекты реального мира: они тоже состоят из состояния и связанного с ним поведения. Объект сохраняет свое состояние в поля и раскрывает свое поведение через методы.
класс: это "шаблон" / "чертеж", который используется для создания объектов. В основном, класс будет состоять из поля, статического поля, метода, статического метода и конструктора. Поле используется для хранения состояния класса (например: имя объекта Student). Метод используется для представления поведения класса (например: как объект студента собирается встать). Конструктор используется для создания нового экземпляра Класс.
экземпляр: экземпляр-это уникальная копия класса, представляющего объект. При создании нового экземпляра класса JVM выделит для этого экземпляра класса пространство памяти.
приведен следующий пример:
public class Person { private int id; private String name; private int age; public Person (int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public int hashCode() { final int prime = 31; int result = 1; result = prime * result + id; return result; } public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (id != other.id) return false; return true; } public static void main(String[] args) { //case 1 Person p1 = new Person(1, "Carlos", 20); Person p2 = new Person(1, "Carlos", 20); //case 2 Person p3 = new Person(2, "John", 15); Person p4 = new Person(3, "Mary", 17); } }
для случая 1 Существует два экземпляра класса Person, но оба экземпляра представляют один и тот же объект.
для случая 2, есть два экземпляра класса Person, но каждый экземпляр представляет другой объект.
Итак, класс, объект и экземпляр-это разные вещи. Объект и экземпляр не являются синонимами, как это предлагается в ответе, выбранном как правильный ответ.
определение "объект является экземпляром класса", концептуально неверно, но правильно в соответствии с реализацией. На самом деле объектно-ориентированные функции взяты из реальной жизни, для фокусировки ума программиста от большего к меньшему. В реальной жизни классы предназначены для управления объектом.Например, у нас, людей, есть каста,религия, национальность и многое другое. Эти касты, религия, национальность являются классами и не существуют без людей. Но в реализации есть нет существования объектов без классов. Объект - это дискретная сущность, имеющая некоторый четко определенный атрибут. Здесь дискретное означает то, что делает его уникальным от других. Хорошо определенный атрибут имеет смысл в некотором контексте. Класс-классификация объекта, имеющего некоторое общее поведение или объекты некоторого общего типа.
хотя приведенные выше ответы верны, другой способ мышления о классах и объектах будет использовать примеры реального мира: класс с именем Animal может содержать объекты, такие как кошка, собака или рыба. Объект с названием Библии будет классной книгой и т. д. Классы-общие, объекты-специфические. Этот пример мысли помог мне, когда я изучал Java.