Разность объектов, классов и экземпляров [duplicate]

вы также можете использовать это:

.dropdown {
height: 0px;
width: 0px;
opacity: .0;
color: white;
}
.dropdown:hover {
height: 20px;
width: 50px;
opacity: 1;
transition: opacity 200ms;
/* Safari */
-webkit-transition: opacity 200ms;
}
66
задан Francesco Menzani 8 October 2015 в 16:07
поделиться

14 ответов

Java (и любой другой язык программирования) моделируется в терминах типов и значений . На теоретическом уровне значение является представлением для некоторого кванта информации, а тип представляет собой набор значений. Когда мы говорим, что значение X является экземпляром типа Y, мы просто говорим, что X является членом набора значений, который является типом Y.

Так вот что термин «экземпляр» на самом деле означает: он описывает отношения не вещь.

Система типов языка программирования Java поддерживает два типа типов: примитивные типы и reference типы . Типы ссылок далее подразделяются на типы массивов и . Объект Java является экземпляром ссылочного типа.

Объект - это экземпляр класса или массив. ( JLS 4.3.1 )

Это теоретический тип.

На практике большинство разработчиков Java обрабатывают слова «экземпляр» и «объект» как синонимы. (И это включает меня, затем я пытаюсь что-то объяснить быстро.) И большинство разработчиков используют слово «значение», а не «экземпляр», чтобы ссылаться на экземпляр примитивного типа.

68
ответ дан Stephen C 23 August 2018 в 16:48
поделиться

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

instance - общий термин для object. FYI, Object является классом.

Например,

Class A{

}

A ref = new A();

Для приведенного выше фрагмента кода ref является ссылкой для объекта класса A, сгенерированного в куче.

3
ответ дан Arun 23 August 2018 в 16:48
поделиться

Честно говоря, я чувствую себя более комфортно с определениями блога Альфреда :

Объект: объекты реального мира разделяют две основные характеристики, состояние и поведение. У человека есть состояние (имя, возраст) и поведение (бег, сон). Автомобиль имеет состояние (текущая скорость, токовая передача) и состояние (тормоз, сменное снаряжение). Программные объекты концептуально похожи на объекты реального мира: они также состоят из состояния и связанного с ним поведения. Объект сохраняет свое состояние в полях и раскрывает его поведение с помощью методов.

Класс: это «шаблон» / «чертеж», который используется для создания объектов. В принципе, класс будет состоять из поля, статического поля, метода, статического метода и конструктора. Поле используется для хранения состояния класса (например: имя объекта Student). Метод используется для представления поведения класса (например: как объект 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, но каждый экземпляр представляет другой объект.

Таким образом, класс, объект и экземпляр - это разные вещи. Объект и экземпляр не являются синонимами, как это предлагается в ответе, выбранном в качестве правильного ответа.

1
ответ дан Carlos Casallas 23 August 2018 в 16:48
поделиться

Класс в основном является определением и содержит код объекта. Объект является экземпляром класса

, например, если вы говорите

String word = new String();

, класс является классом String, который описывает слово объекта (экземпляра).

Когда класс объявлен, память не выделяется, поэтому класс является просто шаблоном.

Когда объект класса объявлен, выделяется память.

27
ответ дан DevD 23 August 2018 в 16:48
поделиться

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

Вот пример класса, представляющего Car:

public class Car {

    int currentSpeed;
    String name;

    public void accelerate() {  
    }

    public void park() {
    }

    public void printCurrentSpeed() {
    }
}

Вы можете создать экземпляры объекта Car следующим образом:

Car audi = new Car();
Car toyota = new Car();

Я взял пример из этого учебника

2
ответ дан filip_j 23 August 2018 в 16:48
поделиться

Определение «Объект является экземпляром класса», концептуально неверно, но верно в соответствии с реализацией. На самом деле объектно-ориентированные функции взяты из реальной жизни, для того, чтобы сосредоточить ум программиста от большего до меньшего. В реальной жизни классы предназначены для управления объектом. Например, у нас есть каста, религия, национальность и многое другое. Эти касты, религия, национальность являются классами и не имеют существования без людей. Но в реализации нет существования объектов без классов. Объект-Объект - это дискретный объект, имеющий некоторый четко определенный атрибут. Здесь дискретный означает нечто, что делает его уникальным от другого. Хорошо определенный атрибут имеет смысл в некотором контексте. Класс - классификация объекта, имеющего некоторое общее поведение или объекты некоторого общего типа.

-1
ответ дан Gaurav Kathuria 23 August 2018 в 16:48
поделиться

Класс - это проект, который вы используете для создания объектов. Объект - это экземпляр класса - это конкретная вещь, которую вы создали с помощью определенного класса. Итак, «объект» и «экземпляр» - это одно и то же, но слово «экземпляр» указывает на отношение объекта к его классу.

Это легко понять, если вы посмотрите на пример. Например, предположим, что у вас есть класс 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, что и во всех объектно-ориентированных языках программирования.

77
ответ дан Jesper 23 August 2018 в 16:48
поделиться

Класс - это шаблон или тип. Объект - это экземпляр класса.

Например:

public class Tweet {

}

Tweet newTweet = new Tweet();

Tweet - это класс, а newTweet - объект класса.

-2
ответ дан JF Meier 23 August 2018 в 16:48
поделиться

Любые данные, хранящиеся в вашем компьютере, и процессы в самом базовом представлении представляют собой строку бит. То, как эти биты интерпретируются, осуществляется через типы данных. Типы данных могут быть примитивными или сложными. Примитивные типы данных - например, int или double. Они имеют определенную длину и конкретный способ интерпретации. В случае целого числа обычно используется первый бит для знака, остальные используются для значения.

Сложные типы данных могут быть комбинациями примитивных и других сложных типов данных и называются «Class "в Java.

Вы можете определить сложный тип данных PeopleName, состоящий из двух строк, называемых именем и фамилией. Каждая строка в Java является еще одним сложным типом данных. Строки в обратном порядке (возможно) реализованы с использованием примитивного типа данных char, для которого Java знает, сколько бит они берут для хранения и как их интерпретировать.

Когда вы создаете экземпляр типа данных, вы получаете объект и ваши компьютеры резервируют для него некоторую память и запоминают его местоположение и имя этого экземпляра. Экземпляр PeopleName в памяти займет пространство двух переменных String плюс немного больше для бухгалтерии. Целое число занимает 32 бита в Java.

Сложные типы данных могут иметь назначенные им методы. Методы могут выполнять действия по своим аргументам или по экземпляру типа данных, вызываемого этим методом. Если у вас есть два экземпляра PeopleName, называемых p1 и p2, и вы вызываете метод p1.getFirstName (), он обычно возвращает первое имя первого человека, но не второго человека.

2
ответ дан Kage 23 August 2018 в 16:48
поделиться

Хотя приведенные выше ответы верны, другим способом мышления о классах и объектах было бы использование примеров реального мира: в классе с именем Animal могут содержаться такие объекты, как Cat, Dog или Fish. Объект с названием Библии будет иметь классную книгу и т. Д. Классы являются общими, объекты специфичны. Этот мысленный пример помог мне, когда я изучал Java.

-1
ответ дан kurdtpage 23 August 2018 в 16:48
поделиться

Класс - это тип данных. Этот тип используется для создания объекта.

  • Экземпляр логичен, но объект физически означает какую-то память.
  • Мы можем создать экземпляр для абстрактного класса, а также для интерфейса, но мы не можем создать для них объект.
  • Объект - это экземпляр класса и экземпляр, представляющий объект класса ie.
  • Экземпляр ссылается на ссылку объекта.
  • Объект фактически указывает на адрес памяти этого экземпляра.
  • Вы не можете передавать экземпляр поверх слоев, но вы можете передать объект по слоям
  • Вы не можете сохранить экземпляр, но вы можете сохранить объект
  • . Один объект может иметь более одного экземпляра.
  • Экземпляр будет иметь как определение класса, так и определение объекта, в котором, как и в объекте, будет только определение объекта.

Синтаксис объекта:

 Classname var=new Classname();

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

 Classname varname;
6
ответ дан Lucky 23 August 2018 в 16:48
поделиться

Если у вас есть программа, которая моделирует автомобили, у вас есть класс для представления автомобилей, поэтому в коде вы можете сказать:

Car someCar = new Car();

someCar теперь является экземпляром класса Car. Если программа используется на ремонтной мастерской, а someCar представляет ваш автомобиль в своей системе, то ваш автомобиль является объектом.

Итак, автомобиль - это класс, который может представлять любой автомобиль реального мира. SomeCar - это пример Класс автомобиля и someCare представляют один объект реальной жизни (ваш автомобиль)

, однако экземпляр и объект очень часто используются взаимозаменяемо, когда дело доходит до обсуждения кодирования

2
ответ дан Rune FS 23 August 2018 в 16:48
поделиться

Класс

  • Он имеет логическое существование, т. е. при его создании не выделяется пространство памяти.
  • Это набор объектов.
  • ] Класс может рассматриваться как проект создания объектов. Он создается с использованием класса keyword. Класс A определяет методы и элементы данных, которые будут обладать объектами.

Объект

  • Он имеет физическое существование, т.е. пространство памяти выделяется при его создании.
  • Это экземпляр класса.
  • Объект - это уникальный объект, который содержит члены данных и функции-члены вместе на языке ООП. Он создается с использованием нового ключевого слова. Объект указывает реализации методов и значений, которые будут принадлежать членам данных в классе.
1
ответ дан user 23 August 2018 в 16:48
поделиться

Мне нравится объяснение Джеспера в неспециалистических терминах

. Импровизируя примеры из ответа Йеспера,

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 являются объектами

myHouse - это экземпляр of House (связывает Object-myHouse с его классом) myCar является экземпляром Car

коротким

«myHouse - это экземпляр класса House», который аналогичен сказанному « myHouse - это объект типа House "

10
ответ дан user2390183 23 August 2018 в 16:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: