Разница между классами, объектами и экземплярами

Что такое класс, объект и экземпляр в Java?

Ответ 1

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

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

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

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

Это тип теоретического представления.

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

Ответ 2

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

Ответ 3

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

например, если вы скажете

String word = new String();

класс - это класс String, который описывает слово object (instance).

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

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

Ответ 4

Мне нравится объяснение Джеспера с точки зрения непрофессионала

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

class House {
// blue print for House Objects
}

class Car {
// blue print for Instances of Class Car 
}

House myHouse = new House();
Car myCar = new Car();

myHouse и myCar являются объектами

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

короче

"myHouse - это экземпляр класса House", что означает "myHouse - объект типа House".

Ответ 5

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

  • Экземпляр логичен, но объект - это физическое средство, которое занимает некоторую память.

  • Мы можем создать экземпляр для абстрактного класса, а также для интерфейса, но мы не можем создать файл объект для них.

  • Объект - это экземпляр класса и экземпляр, представляющий объект класса i.e.

  • Экземпляр ссылается на ссылку объекта.

  • Объект фактически указывает на адрес памяти этого экземпляра.

  • Вы не можете передать экземпляр над слоями, но вы можете передать объект по слоям

  • Вы не можете сохранить экземпляр, но вы можете сохранить объект

  • Один объект может иметь более одного экземпляра.

  • Экземпляры будут иметь как определение класса, так и определение объекта, где, как и в объекте, оно будет иметь только определение объекта.

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

 Classname var=new Classname();

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

 Classname varname;

Ответ 6

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

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

Например,

Class A{

}

A ref = new A();

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

Ответ 7

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

Car someCar = new Car();

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

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

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

Ответ 8

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

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

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

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

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

Ответ 9

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

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

public class Car {

    int currentSpeed;
    String name;

    public void accelerate() {  
    }

    public void park() {
    }

    public void printCurrentSpeed() {
    }
}

Вы можете создать экземпляры для объекта. Например:

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

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

Ответ 10

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

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

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

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

Ответ 11

Класс

  • Он имеет логическое существование, то есть, когда оно создано, пространство памяти не выделяется.

  • Это набор объектов.

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

    • Создается с использованием ключевого слова

    • Класс определяет методы и элементы данных, которые будут обладать объектами.


Объект

  • Он имеет физическое существование, т.е. пространство памяти выделяется при его создании.

  • Это экземпляр класса.

  • Объект - это уникальный объект, который содержит элементы данных и функции-члены вместе на языке ООП.

    • Создается с использованием нового ключевого слова

    • Объект определяет реализации методов и значений, которые будут принадлежать членам данных в классе.

Ответ 12

Класс: Структура

Объект: Физическое Проявление

Экземпляр: каждый объект, созданный из класса

Ссылка: адрес объекта

Ответ 13

Класс - это план, необходимый для создания объекта (= экземпляр).

Разница между объектом и экземпляром в том, что объект - это вещь, а экземпляр - это отношение.

Другими словами, instance описывает отношение объекта к классу, из которого был создан объект.

Ответ 14

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

Ответ 15

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

Ответ 16

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

Например:

public class Tweet {

}

Tweet newTweet = new Tweet();

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