Java'da sınıf, nesne ve örnek nedir?
Yanıtlar:
Java (ve diğer herhangi bir programlama dili) türler ve değerler açısından modellenmiştir . Teorik düzeyde, bir değer , bazı kuantum bilginin bir temsilidir ve bir tür , bir değerler kümesidir. X değerinin Y türünün bir örneği olduğunu söylediğimizde, yalnızca X'in Y türü olan değerler kümesinin bir üyesi olduğunu söylüyoruz.
Yani "örnek" terimi gerçekten şu anlama geliyor: bir ilişkiyi tanımlıyor, bir şey değil.
Java programlama dilinin tür sistemi iki tür türü destekler: ilkel türleri ve başvuru türleri . Başvuru türleri ayrıca sınıflara ve dizi türlerine ayrılır . Java nesnesi , referans türünün bir örneğidir.
Bir nesne, bir sınıf örneği veya bir dizidir. ( JLS 4.3.1 )
Bu tür teorik görüştür.
Uygulamada, çoğu Java geliştiricisi "eşgörünüm" ve "nesne" sözcüklerini eşanlamlı olarak ele alır. (Ve buna ben de dahil, o zaman bir şeyi hızlı bir şekilde açıklamaya çalışıyorum.) Ve çoğu geliştirici, ilkel bir türün örneğine atıfta bulunmak için "örnek" yerine "değer" kelimesini kullanır.
user2390183
. Değişkenlere "isim" muamelesi yapıyorsunuz. Onlar değil. Değişkenler, nesnelere referanslar içeren "referans tutuculardır". Nesnelerin iç isimleri yoktur. Referanslar, sabit bir temsile sahip olmadıkları dışında, bir nesnenin "ismine" en yakın şeydir. (GC, referansı temsil etmek için kullanılan bit desenini değiştiren bir nesneyi hareket ettirebilir.)
Bir sınıf oluşturmak için kullanabilirsiniz bir plan olduğunu nesneler . Bir nesne, bir sınıfın örneğidir - belirli bir sınıfı kullanarak yaptığınız somut bir "şey" dir. Dolayısıyla, 'nesne' ve 'örnek' aynı şeydir, ancak 'örnek' kelimesi bir nesnenin sınıfıyla ilişkisini belirtir.
Bir örneğe bakarsanız bunu anlamak kolaydır. Örneğin, bir sınıfınız olduğunu varsayalım House
. Kendi eviniz bir nesnedir ve bir sınıf örneğidir House
. Kız kardeşinizin evi başka bir nesnedir (başka bir sınıf örneği 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();
Sınıf House
, bir evin ne olduğu kavramını tanımlar ve sınıfın nesneleri ve örnekleri olan belirli, somut evler vardır House
.
Not: Bu, tüm nesne yönelimli programlama dillerinde olduğu gibi Java'da da tamamen aynıdır.
class House {
// blue print for House Objects
}
class Car {
// blue print for Instances of Class Car
}
House myHouse = House new();
Car myCar = Car new();
Bir sınıf temelde bir tanımdır ve nesnenin kodunu içerir. Bir nesne, bir sınıfın bir örneğidir
örneğin diyorsan
String word = new String();
sınıf, nesne (örnek) kelimesini tanımlayan String sınıfıdır.
Bir sınıf bildirildiğinde, bellek ayrılmaz, dolayısıyla sınıf sadece bir şablondur.
Sınıfın nesnesi bildirildiğinde, bellek ayrılır.
static
sınıfın değişkenlerini temsil eder . (Ve sınıfın tip kimliğiyle ilgili diğer şeyler için de.)
Jesper'ın meslekten olmayan terimlerle açıklamasını seviyorum
Jesper'ın cevabından doğaçlama örnekler vererek,
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 ve myCar nesnelerdir
myHouse bir House örneğidir (Object-myHouse'u Class-House ile ilişkilendirir) myCar bir Car örneğidir
Kısacası
"myHouse bir olan örnek bir sınıfı söyleyerek aynıdır Ev" "myHouse bir olan nesne arasında tip Ev"
Sınıf Veri Türüdür, Nesne oluşturmak için bu türü kullanırsınız.
Örnek Mantıksaldır, ancak nesne Fizikseldir, araç biraz bellek kaplar.
Soyut sınıf için olduğu kadar arayüz için de bir örnek oluşturabiliriz, ancak bunlar için bir
nesne yaratamayız .
Nesne, sınıfın örneğidir ve örnek, sınıfın yani nesnenin temsilcisi anlamına gelir.
Örnek, bir nesnenin Referansını ifade eder.
Nesne aslında o örneğin bellek adresine işaret ediyor.
Örneği katmanların üzerinden geçiremezsiniz ancak nesneyi katmanların üzerinden geçirebilirsiniz.
Bir örneği depolayamazsınız ancak bir nesneyi depolayabilirsiniz
Tek bir nesnenin birden fazla örneği olabilir.
Örnek, hem sınıf tanımına hem de nesne tanımına sahip olacaktır, burada nesnede olduğu gibi yalnızca nesne tanımına sahip olacaktır.
Nesne Sözdizimi:
Classname var=new Classname();
Ancak, örneğin oluşturma, yalnızca bir nesneye başvuran bir işaretçi döndürür, sözdizimi şöyledir:
Classname varname;
Java'da, nesneler yığın hafızasında ortaya çıkar. Bunlar, başvurumuzda belirtilmesi ve kullanılması için referans gerektirir. Referans, uygulamamızdaki nesneleri kullanabileceğimiz nesnenin bellek konumuna sahiptir. Kısaca bir referans, bir bellek konumunda somutlaştırılmış nesnenin adresini depolayan değişkenin adından başka bir şey değildir.
An instance
, için genel bir terimdir object
. FYI, Object
bir sınıftır.
Örneğin,
Class A{
}
A ref = new A();
Yukarıdaki kod parçacığı için ref, öbek üzerinde oluşturulan A sınıfı bir nesnenin referansıdır.
Açıkçası, Alfred blog tanımlarında kendimi daha rahat hissediyorum :
Nesne : gerçek dünya nesneleri 2 ana özelliği, durumu ve davranışı paylaşır. İnsanın durumu (adı, yaşı) ve davranışı (koşma, uyuma) vardır. Otomobilin durumu (mevcut hız, mevcut vites) ve davranışı (fren uygulama, vites değiştirme) var. Yazılım nesneleri kavramsal olarak gerçek dünya nesnelerine benzer: onlar da durumdan ve ilgili davranışlardan oluşur. Bir nesne, durumunu alanlarda depolar ve davranışını yöntemler aracılığıyla ortaya çıkarır.
Sınıf : nesneler oluşturmak için kullanılan bir "şablon" / "taslak" tır. Temel olarak, bir sınıf alan, statik alan, yöntem, statik yöntem ve kurucudan oluşacaktır. Alan, sınıfın durumunu tutmak için kullanılır (örneğin: Öğrenci nesnesinin adı). Yöntem, sınıfın davranışını temsil etmek için kullanılır (örneğin: bir Öğrenci nesnesinin nasıl ayağa kalkacağı). Oluşturucu, Sınıfın yeni bir Eşgörünümünü oluşturmak için kullanılır.
Örnek : Örnek, bir Nesneyi temsil eden bir Sınıfın benzersiz bir kopyasıdır. Bir sınıfın yeni bir örneği oluşturulduğunda, JVM bu sınıf örneği için bir bellek odası ayıracaktır.
Bir sonraki örnek göz önüne alındığında:
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);
}
}
Durum 1 için, Person sınıfının iki örneği vardır, ancak her iki örnek de aynı nesneyi temsil eder.
Durum 2 için, Person sınıfının iki örneği vardır, ancak her örnek farklı bir nesneyi temsil eder.
Yani sınıf, nesne ve örnek farklı şeylerdir. Doğru cevap olarak seçilen cevapta önerildiği gibi nesne ve örnek eşanlamlı değildir.
Arabaları modelleyen bir programınız varsa, arabaları temsil edecek bir sınıfınız vardır, bu nedenle Kod'da şunu söyleyebilirsiniz:
Car someCar = new Car();
someCar artık Car sınıfının bir örneğidir. Program bir tamirhanede kullanılıyorsa ve someCar arabanızı kendi sisteminde temsil ediyorsa, o zaman nesneniz arabanızdır.
Yani Araba, herhangi bir gerçek dünya otomobilini temsil edebilen bir sınıftır someCar, Araba sınıfının bir örneğidir ve someCare, tek bir gerçek yaşam nesnesini (arabanız) temsil eder .
ancak örnek ve nesne, kodlama tartışılırken sıklıkla birbirinin yerine kullanılır
someCar
, bir Car örneğine referanstır. Örneğin kendisinin bir adı yoktur.
Bilgisayarınızın depoladığı ve işlediği her türlü veri, en temel temsilinde bir bit dizisidir. Bu bitlerin yorumlanma şekli, veri türleri aracılığıyla yapılır. Veri türleri ilkel veya karmaşık olabilir. İlkel veri türleri - örneğin - int veya double'dır. Belirli bir uzunlukları ve belirli bir yorumlanma tarzları vardır. Bir tamsayı durumunda, genellikle ilk bit işaret için kullanılırken diğerleri değer için kullanılır.
Karmaşık veri türleri, ilkel ve diğer karmaşık veri türlerinin kombinasyonları olabilir ve Java'da "Sınıf" olarak adlandırılır.
Ad ve soyad olarak adlandırılan iki Dizeden oluşan karmaşık veri türü KişilerAdı tanımlayabilirsiniz. Java'daki her String, başka bir karmaşık veri türüdür. Buna karşılık dizeler (muhtemelen), Java'nın depolamak için kaç biti depoladığını ve bunları nasıl yorumlayacağını bildiği ilkel veri türü char kullanılarak gerçeklenir.
Bir veri türünün bir örneğini oluşturduğunuzda, bir nesne alırsınız ve bilgisayarlarınız bunun için bir miktar bellek ayırır ve konumunu ve o örneğin adını hatırlar. Bellekteki bir PeopleName örneği, iki String değişkeninin alanını ve ayrıca defter tutma için biraz daha fazla yer kaplar. Java'da bir tamsayı 32 bit kaplar.
Karmaşık veri türlerinin kendilerine atanmış yöntemleri olabilir. Yöntemler, bağımsız değişkenleri üzerinde veya bu yöntemi çağırdığınız veri türü örneğinde eylemler gerçekleştirebilir. P1 ve p2 adında iki PeopleName örneğiniz varsa ve p1.getFirstName () yöntemini çağırırsanız, genellikle ilk kişinin adını döndürür, ancak ikinci kişinin adını döndürmez.
Sınıfların ve nesnelerin arkasındaki kavram, mantığı tek bir programlama biriminde kapsüllemektir. Sınıflar , nesnelerin oluşturulduğu taslaklardır.
İşte bir Arabayı temsil eden bir sınıf örneği:
public class Car {
int currentSpeed;
String name;
public void accelerate() {
}
public void park() {
}
public void printCurrentSpeed() {
}
}
Sen oluşturabilir örnekleri arasında nesnesi böyle Car:
Car audi = new Car();
Car toyota = new Car();
Bu öğreticiden örnek aldım
Mantıksal bir varlığa sahiptir, yani yaratıldığında bellek alanı ayrılmamıştır.
Bir dizi nesnedir.
Bir sınıf, nesneler yaratmanın bir planı olarak kabul edilebilir.
Class anahtar sözcüğü kullanılarak oluşturulur
Bir sınıf, Nesnelerin sahip olacağı yöntemleri ve veri üyelerini tanımlar.
Fiziksel varlığı vardır, yani bellek alanı yaratıldığında tahsis edilir.
Bir sınıfın örneğidir.
Bir nesne, veri üyelerini ve üye işlevlerini OOP dilinde birlikte içeren benzersiz bir varlıktır.
Yeni anahtar kelime kullanılarak oluşturulur
Bir nesne, yöntemlerin uygulamalarını ve sınıftaki veri üyelerinin sahip olacağı değerleri belirtir.
Sınıf, bir nesne (= örnek) yapmak için gerekli olan bir plandır.
Bir nesne ile bir örnek arasındaki fark, bir nesnenin bir şey ve bir örneğin bir ilişkidir.
Başka bir deyişle, örnek, bir nesnenin, nesnenin yapıldığı sınıfla ilişkisini tanımlar.
"Nesne bir sınıfın örneğidir" tanımı kavramsal olarak yanlıştır, ancak uygulamaya göre doğrudur. Aslında nesneye yönelik özellikler, programcının zihnini çoktan aza odaklamak için gerçek hayattan alınmıştır. Gerçek hayatta sınıflar nesneyi yönetmek için tasarlanmıştır.Örneğin, biz insanların bir kastı, dini, milliyeti ve çok daha fazlası var. Bu dökümler, din, milliyet sınıflardır ve insan olmadan varolmazlar. Ancak uygulamada sınıfsız nesnelerin varlığı yoktur. Object- Object, iyi tanımlanmış bir niteliğe sahip ayrı bir varlıktır. Burada ayrık, onu diğerinden benzersiz kılan bir anlama gelir. İyi tanımlanmış nitelik bazı bağlamlarda anlamlıdır. Sınıf - Bazı ortak davranışlara veya bazı ortak tipteki nesnelere sahip nesnenin sınıflandırılması.
Yukarıdaki cevaplar doğru olsa da, Sınıflar ve Nesneler hakkında düşünmenin başka bir yolu da gerçek dünyadan örnekler kullanmak olabilir: Hayvan adlı bir sınıf, Kedi, Köpek veya Balık gibi nesneleri içerebilir. İncil başlıklı bir nesne, sınıf Kitap vb. Olabilir. Sınıflar geneldir, nesneler özeldir. Bu düşünce örneği Java öğrenirken bana yardımcı oldu.
Animal
bir sınıftır ve Cat
bir örneğidir, benim evcil kedi kedi "Kabarık" nedir?
Animal
tüm hayvanların Cat
kümesini ve tüm kedilerin kümesini belirtir. Cat
, Animal
örneği olmayan bir alt kümedir Animal
.
Sınıf bir şablon veya türdür. Nesne, sınıfın bir örneğidir.
Örneğin:
public class Tweet {
}
Tweet newTweet = new Tweet();
Tweet bir sınıftır ve newTweet, sınıfın bir nesnesidir.