Вопрос:

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

java class object instance

153374 просмотра

16 ответа

714 Репутация автора

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

Автор: Pranjut Источник Размещён: 01.08.2009 05:08

Ответы (16)


29 плюса

1374 Репутация автора

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

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

String word = new String();

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

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

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

Автор: mustafabar Размещён: 01.08.2009 05:14

75 плюса

535492 Репутация автора

Решение

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

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

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

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

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

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

Автор: Stephen C Размещён: 01.08.2009 02:07

2 плюса

18553 Репутация автора

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

Car someCar = new Car();

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

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

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

Автор: Rune FS Размещён: 01.08.2009 02:17

2 плюса

330 Репутация автора

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

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

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

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

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

Автор: Kage Размещён: 28.09.2009 09:39

86 плюса

157253 Репутация автора

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

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

Автор: Jesper Размещён: 28.09.2009 09:46

6 плюса

351 Репутация автора

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

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

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

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

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

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

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

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

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

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

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

 Classname var=new Classname();

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

 Classname varname;
Автор: SwatiKothari Размещён: 12.04.2013 12:14

3 плюса

1655 Репутация автора

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

Это instanceобщий термин для object. К вашему сведению, Objectэто класс.

Например,

Class A{

}

A ref = new A();

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

Автор: Arun Размещён: 09.07.2013 07:09

11 плюса

731 Репутация автора

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

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

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 это объект из типа дома»

Автор: user2390183 Размещён: 20.10.2013 08:12

2 плюса

492 Репутация автора

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

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

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();

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

Автор: filip_j Размещён: 15.11.2014 08:34

-1 плюса

1 Репутация автора

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

Автор: Gaurav Kathuria Размещён: 10.01.2016 06:35

-1 плюса

1951 Репутация автора

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

Автор: kurdtpage Размещён: 02.03.2016 09:35

1 плюс

0 Репутация автора

Учебный класс

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

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

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

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

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


объект

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

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

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

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

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

Автор: user6110959 Размещён: 20.05.2016 12:44

-2 плюса

79 Репутация автора

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

Например:

public class Tweet {

}

Tweet newTweet = new Tweet();

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

Автор: Gagan Размещён: 04.09.2016 09:48

2 плюса

244 Репутация автора

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

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

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

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

Автор: Carlos Casallas Размещён: 31.01.2018 04:42

0 плюса

21 Репутация автора

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

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

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

Автор: Yoji Yamamoto Размещён: 28.03.2019 05:30

0 плюса

14 Репутация автора

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

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

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

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

Автор: Abishek M Размещён: 13.06.2019 09:12
Вопросы из категории :
32x32