Bir Örnek ve bir Nesne arasındaki fark nedir?


95

Bir Örnek ve bir Nesne arasındaki fark nedir? Bir fark var mı yok mu?


10
Belki de iyi bilinen hata mesajından "Nesne başvurusu bir nesnenin örneğine ayarlanmadı" sonucunu çıkarabilirsiniz . : ->
herzmeister

JVM spesifikasyonundan: "Bir nesne, dinamik olarak ayrılmış bir sınıf örneği veya bir dizidir." Docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html
yfklon

StackOverFlow Nesne ve örnek arasındaki fark hakkında kısa bir açıklama yaptım umarım yardımcı olur
Pushkarraj Pujari

1
Bir nesne, bir sınıfın bir örneğidir. Hepsi bu kadar.
user207421

Yanıtlar:


59

Örnek ve Nesne, Nesne Yönelimli Programlamadan alınmıştır .

Java, C ++ ve Smalltalk gibi bazı programlama dilleri için, kodu tanımlamak ve anlamak önemlidir. Yapılandırılmış Programlamada kullanılan diğer dillerde bu kavram mevcut değildir.

Bu, Yapısal Programlamadan bir görüştür. Zamanınızın çoğunu tüketmesi gereken önemli bir fark yok. Bazı insanların üzerine yazmak için çok fazla yer kaplayabileceği süslü bir dil olabilir, ancak günün sonunda, bir kodlayıcı, geliştirici, programcı, mimar söz konusu olduğunda, bir sınıf örneği ve nesne aynı anlama gelir ve genellikle birbirinin yerine kullanılabilir . Kariyerimde seçici olacak ve yarım saatini farklılıklara işaret etmeye çalışan biriyle hiç tanışmadım çünkü gerçekten hiçbiri yok. Diğer geliştirme çabalarına zaman daha iyi harcanabilir.

GÜNCELLEME Swift ile ilgili olarak, Swift'i icat eden Apple bunu tercih ediyor:

Bir sınıfın bir örneği geleneksel olarak bir nesne olarak bilinir. Bununla birlikte, Swift sınıfları ve yapıları, işlevsellik açısından diğer dillere göre çok daha yakındır ve bu bölümün çoğu, bir sınıf veya bir yapı türünün örneklerine uygulanabilecek işlevleri açıklar. Bu nedenle, daha genel bir terim olan örnek kullanılır.


19

Harika soru.

Mümkün olan en basit şekilde açıklayacağım: Sepetinizde 5 elma olduğunu söyleyin. Bu elmaların her biri, bazı özellikleri olan (yani büyük, yuvarlak, ağaçlarda yetişen) Apple türünde bir nesnedir.

Programlama açısından, değişken boyuta sahip Apple adında bir sınıfa sahip olabilirsiniz: büyük, şekil: yuvarlak, habitat: ağaçlarda büyür. Sepetinizde 5 elma olması için, 5 elma denemeniz gerekir .Apple apple1, Apple apple2, Apple apple3 etc....

Alternatif olarak: Nesneler bir şeyin tanımı, örnekler fiziksel şeylerdir.

Bu mantıklı mı?


63
Öyle değil. :) "Nesneler bir şeyin tanımıdır" Burada nesneler dediğiniz şey sınıflardır.
T-Gergely

11

Örnek: örnek, yalnızca bir referans oluşturmak (kopya) anlamına gelir.

nesne: bellek konumunun yeni operatör kullanılarak nesneyle ilişkilendirildiği (sınıfın bir çalışma zamanı varlığı olduğu) anlamına gelir.

Basit bir deyişle, Örnek, nesnenin belirli bir zamandaki kopyasını ifade ederken, nesne, sınıfın bellek adresini ifade eder.


1
bir örneğin bir nesneye referans olduğunu söylemek benim için işleri gerçekten açıklığa kavuşturdu.
John C

4
@JohnC Doğru olmamalı, çünkü doğru değil. Bir nesne, bir sınıfın bir örneğidir. Hepsi bu kadar.
user207421

8

Diyelim ki birkaç sandalye inşa ediyorsun.

Bir sandalyenin nasıl yapılacağını ve bir araya getirileceğini gösteren şema, bir yazılım sınıfına karşılık gelir.

Diyelim ki diyagramdaki desene göre beş sandalye inşa ettiniz. Aynı şekilde, bir sınıftaki desene göre beş yazılım nesnesi oluşturabilirsiniz.

Her sandalyenin, her bir sandalyeyi tanımlamak için koltuğun altına yazılmış benzersiz bir numarası vardır. 3. sandalye, sandalye modelinin bir örneğidir. Benzer şekilde, bellek konumu 3, bir yazılım modelinin bir örneğini içerebilir.

Dolayısıyla, bir örnek (3. sandalye), bir sandalye modelinin tek bir benzersiz, spesifik tezahürüdür.


3
Bir nesne, bir sınıfın bir örneğidir. Örnek, bir nesnenin örneği değildir. Cevap anlamsız.
user207421

1
Vay canına, dokuz yıl sonra birisi nihayet açıklamamdaki kusura dikkat çekti. Teşekkürler! Şimdi daha iyi?
Brian Showalter

7

Nesne :

Genel bir terimdir, temelde durumu (değişkenleri) ve davranışı (yöntemleri) olan bir Yazılım paketidir.

Sınıf :

Bir nesne örneği için mavi bir baskı (şablon) - bu benzersiz bir nesnedir, örneğin bir nesneyi iki kez yaratırsanız bu, iki örnek oluşturduğunuz anlamına gelir

Bir örnek vereyim

Class student()
{
   private string firstName;
  public student(string fname)
  {
    firstName=fname;
  }
  Public string GetFirstName()
  {
    return firstName;
  }
}

Nesne örneği :

Öğrenci s1 = yeni öğrenci ("Martin"); Öğrenci s2 = yeni öğrenci ("Kumar");

S1, s2 Öğrenci sınıfının nesnesine sahip

Örnek :

s1 ve s2 nesne öğrenci örnekleridir, ikisi benzersizdir .

referans olarak da adlandırılabilir .

temelde s1 ve s2 bir nesneye atanmış değişkenlerdir


1
Bir nesne, bir sınıfın bir örneğidir.
user207421

7

Nesneler ve örnekler çoğunlukla aynıdır; ama çok küçük bir fark var. Eğer Carbir sınıftır, 3 Cars, 3 farklı nesnelerdir. Bu nesnelerin tümü örnektir. Yani bu 3 araba,Car sınıfın .

Ancak "örnek" kelimesi "yapı örneği" anlamına da gelebilir. Ancak nesne yalnızca sınıflar içindir.

Tüm nesneler örneklerdir. Örneklerin tümü nesne olmamalıdır. Örnekler, "yapı örnekleri" veya "nesneler" olabilir. Umarım bu farkı sizin için netleştirir.


3

Bir nesne, özellikler ve yöntemler gibi belirli özelliklere ve özelliklere sahip olan statik bir yapıdır, herhangi bir şey olabilir (bir dizge, bir kullanıcı denetimi, vb.)

Örnek, bu nesnenin kullanabileceğiniz ve bir şeyler yapabileceğiniz benzersiz bir kopyasıdır.

Bilgisayar gibi bir ürün hayal edin.

THE xw6400 iş istasyonu bir nesnedir

SİZİN xw6400 iş istasyonunuz (veya EŞİNİZİN xw6400 iş istasyonu) xw6400 iş istasyonu nesnesinin bir örneğidir


1
Birinci ve ikinci paragraflarınız nesneleri değil sınıfları tanımlar.
user207421

2

Bu cevap basmakalıp görünebilir, ancak bir örnek ile nesne arasındaki farklar hakkında endişelenmek zaten basmakalıp bir şehirdir.

Bence en iyi javascript'te tasvir edildi:

let obj= {"poo":1} 
// "obj" is an object

ayetler

Class Trash {
    constructor(){this.poo = 1;}
}

let i = new Trash();
// "i" is an instance

1

Örnek, bir nesnenin belirli bir temsilidir. Bir nesne genel bir şeyken, bir örnek bellekte oluşturulmuş tek bir nesnedir. Genellikle bir örnek, özelliklerine atanmış ve onu nesne türünün diğer örneklerinden ayıran değerlere sahip olacaktır.


1

Object ve Instance nesnesinin Tanımı'nı görürsek -

Çalışma zamanında sınıfın üyesi için ayrılan belleğe nesne denir veya nesne, Class örneğidir.

Örnek tanımını görelim -

Çalışma zamanında Herhangi biri için ayrılan bellek , örnek değişken olarak adlandırılır.

Şimdi , Malloc, Calloc, Realloc gibi C de gerçekleşen herhangi bir çalışma zamanı bellek tahsisinin anlamını anlayın :

struct p
{

}
p *t1
t1=(p) malloc(sizeof(p))

Yani burada da çalışma zamanı bellek tahsisini ayırıyoruz, ancak burada örnek olarak çağırıyoruz, böylece t1 burada nesne olarak t1 diyemeyiz, bu nedenle Her nesne Sınıfın örneğidir ancak her Örnek Nesne değildir.


Burada bir yerlerde gizlenen doğru bir cevap var ama dilin temizlenmesi ve basitleştirilmesi gerekiyor.
user207421

1

Nesne - Kendi durumuna ve kendi sınıfı tarafından tanımlanan tüm davranışlara erişime sahip bir sınıf örneği.

Örnek - Belirli bir sınıf için bir bellek alanına referans.


1

Bunu açıklamak için kodu kullanmayan bir adam dışında inanamıyorum, ben de bir şans vereyim!

// Design Class
class HumanClass {
    var name:String
    init(name:String) {
        self.name = name
    }
}

var humanClassObject1 = HumanClass(name: "Rehan") 

Şimdi sol taraf, yani: "humanClassObject1" nesnedir ve sağ taraf, yani: HumanClass (isim: "Rehan") bu nesnenin örneğidir.

var humanClassObject2 = HumanClass(name: "Ahmad") // again object on left and it's instance on the right.

Dolayısıyla, temel olarak, örnek o nesne için belirli değerleri içerir ve nesneler bellek konumunu (çalışma zamanında) içerir.

"Nesne başvurusu bir nesnenin bir örneğine ayarlanmadı" ünlü ifadesini hatırlayın, bu, başlatılmamış nesnelerin herhangi bir örneğinin olmadığı anlamına gelir. Swift gibi bazı programlama dillerinde, derleyici, tüm üyelerini başlatmanın hiçbir yolu olmayan bir sınıf tasarlamanıza bile izin vermez (değişken, örneğin: isim, yaş vb.), Ancak bazı dillerde bunu yapmanıza izin verilir:

// Design Class
class HumanClass {
    var name:String // See we don't have any way to initialise name property.
}

Ve hata, yalnızca şuna benzer bir şey yapmaya çalıştığınızda çalışma zamanında gösterilecektir:

var myClass = HumanClass()
print(myClass.name) // will give, object reference not set to an instance of the object.

Bu hata, yukarıda bunu açıklamaya çalıştığım gibi belirli değerlerin (değişkenler \ özellik için) "INSTANCE" olduğunu gösterir! Ve "myClass" nesnesi bellek konumunu (çalışma zamanında) içerir.


1

Bir değişken özel bir türden (sınıf) bildirildiğinde, yalnızca nesne adı verilen bir başvuru oluşturulur. Bu aşamada, bu nesneye bellek ayrılmamaktadır . Sadece bir işaretçi görevi görür (nesnenin gelecekte depolanacağı konuma). Bu sürece 'Beyanname' denir.

Employee e; // e is an object

Öte yandan, newoperatör kullanılarak özel türde bir değişken bildirildiğinde , bu nesneye yığın içinde bellek ayırır ve başvuruyu ayrılmış belleğe döndürür. Şimdi örnek olarak adlandırılan bu nesne . Bu sürece "Örnekleme" denir.

Employee e = new Employee(); // e is an instance

Öte yandan, Java gibi bazı dillerde bir nesne, Oracle'ın Java belgelerinde yazılan satırdan da anlaşılacağı gibi bir örneğe eşdeğerdir :

Not: "Bir sınıfın somutlaştırılması" ifadesi, "bir nesne oluşturmak" ile aynı anlama gelir. Bir nesne oluşturduğunuzda, bir sınıfın "örneğini" oluşturursunuz, dolayısıyla bir sınıfı "başlatırsınız".


0

her nesnenin kendi sınıfının bir örneği olduğu söylenir, ancak sınıfın her örneği, her öznitelik için kendi değerine sahiptir, öznitelik adını ve işlemi, sınıfın öznitelikleriyle paylaşır, ancak bir nesne, sınıfının özniteliğine örtük bir referans içerir


0

Sınıf: Bir sınıf mavi bir baskıdır. Nesne: Sınıfın kopyasıdır. Örnek: Nesnenin bellek adresini tutmak için kullanılan değişkendir.

Çok temel bir analitik örnek

Sınıf Evi -> Evin planı. Ama mavi baskıda yaşayamazsınız. Yaşayacağınız sınıfın örneği olan fiziksel bir Eve ihtiyacınız var. Yani nesnenin gerçek adresi örnektir. Örnekler nesneleri temsil eder.


Örnek, bir değişkene değil, nesneye atıfta bulunur.
user207421

0

Bir sınıfın örneğini oluşturduğunuzda (yeniyi kullanarak), bu örneklenmiş şey bir nesne haline gelir. Bir nesne, kapsülleme, polimorfizm, nesne yönelimli programlamanın soyutlama ilkelerine ve sınıfta tanımlanan örnek üyelerini tüketmek için bir programın etkileşime girdiği gerçek şeye bağlı olabilen bir şeydir. Nesne, örnek üyeler (statik olmayan üyeler) içerir.

Dolayısıyla, bir sınıfın örneği bir nesnedir. 'Örnek' kelimesi, doğduğu yerin kökenine atıfta bulunurken kullanılır, 'bir sınıfın nesnesi' ile karşılaştırıldığında 'bir sınıfın örneği' derseniz daha nettir (ancak ikincisi kullanılabilir).

Bu java belgesinin yuvalanmış sınıflarla ilgili 'İç sınıflar' bölümünü de okuyabilir - https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html


0

Java, nesne yönelimli bir programlama dilidir (OOP). Bu, Java'da ilkel türler dışındaki her şeyin bir nesne olduğu anlamına gelir.

Şimdi, Java nesneleri gerçek dünyadaki nesnelere benzer. Örneğin Java'da mevcut hız ve renk gibi özelliklere sahip bir araba nesnesi oluşturabiliriz; ve şunun gibi davranışlar: hızlandırın ve park edin.

Bu Object .

görüntü açıklamasını buraya girin

Örnek , diğer tarafta, benzer görünen nesnenin benzersiz şekilde başlatılmış bir kopyasıdır Car car = new Car().

Java sınıfları ve nesnesi hakkında daha fazla bilgi edinmek için göz atın


Bir nesne, bir sınıfın bir örneğidir.
user207421

0

Hızlı ve Basit Cevap

  • Sınıf : bir nesne için bir şartname, plan
  • Nesne : sınıfın bellekteki fiziksel varlığı
  • Örnek : nesnenin benzersiz bir kopyası (aynı yapı, farklı veriler)

-1

An objectve an arasındaki farkla ilgili olarak instance, herhangi bir fikir birliği olduğunu düşünmüyorum.

Bana öyle geliyor ki, insanlar bunu kağıtlarda, blog yazılarında, kitaplarda veya sohbetlerde hemen hemen birbirinin yerine değiştiriyor.

Bana gelince, benim gördüğüm şekliyle, bir nesne, kullanıldığı dile göre belirlenen, bellekte genel ve canlı bir varlıktır. Tıpkı içindeki Objectsınıf gibi Java. Bir konteyner tarafından yönetilip yönetilmesin, türüne veya onunla ilişkili başka herhangi bir şeye pek aldırmıyoruz.

An instance, bir objecttürdür ancak this method accepts Foo instances, veya gibi bir türle ilişkilidir you can not put Animal instances in an instance of a List of Vehicles.

objects örneğin locksonlarla ilişkilidir, instances değil , instances'nin yöntemleri vardır. objectsçöp toplanır, instances değil .

Ama dediğim gibi, ben bunu sadece böyle görüyorum ve aralarında standart bir tanım için başvurabileceğimiz herhangi bir organizasyon olduğunu sanmıyorum ve herkesin biraz farklı anlayışları / tanımları olacaktır (elbette sınırlar dahilinde) .


-1

Bir nesne genel bir şeydir, örneğin matematikte doğrusal bir işlev al

ax + b bir nesnedir, 3x + 2 ise bu nesnenin bir örneğidir

Nesne <<< Örnek

Genel <<< Özel

Bundan daha fazlası yok


-2

Bir nesne bir sınıf olabilir, mesela basketbol adında bir sınıfınız var.

ancak birden fazla basket topuna sahip olmak istiyorsanız, kodunuzda 1'den fazla basketbol

basketball1 ve basketball2 deyin. Ardından uygulamanızı çalıştırırsınız. Artık basketbol nesnesinin 2 örneğine sahipsiniz.


Bu, bir Nesnenin bir Sınıf Oluşturucu Örneği olduğu anlamına mı gelir?
sokak töreni

nesneyi bir plan gibi düşünün. Diyelim ki basketbol için bir planımız var, bu sınıf. Basketbol yaratıldığında ve şimdi var olduğunda, bu, basketbol nesnesinin 1 örneğine sahip olduğumuz anlamına gelir. Nesneden başka bir basketbol topu oluşturursak (plan). şimdi 2 basketbol örneğimiz var. Her zaman sadece 1 nesne vardır, ancak bu nesnenin birçok örneğini yapabiliriz.
Darxval

@Darxval o zaman sınıf nedir
Chyanit Singh

-3

Nesne, sınıfa, örnek ise bir nesneye atıfta bulunur. Başka bir deyişle, örnek, içinde belirli değerlere sahip bir nesnenin kopyasıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.