PHP ve Java Class ve Yapı arasındaki fark

5 Cevap java

Object Oriented Programming ile uğraşırken Class ve Yapı arasındaki gerçek fark nedir. Bu soru SE benim görüşmeler sırasında birçok kez sorulur.

Some people says that there is only one difference: Structure members are public by default and Class members are private by default.

Some says there are many differences.

After reading many articles and forums, I have the following differences:

Özel üye olan Sınıflar DEFAULT. Kamu üyelerine sahip yapılar DEFAULT.

Structures are values type. Classes are reference type.

Structure stores in memory via stack. Classes stored in memory via heap.

Structure doesn’t support inheritance. Classes support inheritance.

Oluşturucu farklı bir şekilde çalışır.

'Yeni' operatör farklı bir şekilde çalışır.

Burası satır içi alır veya yığın üzerinde çünkü yapısı için bellek ayrılırken çok hızlı.

What are your opinion on my above list or you have a different one. Thanks

5 Cevap

Bu oldukça dile özgüdür. Siz (sözdizimi yüzeysel benzerliklere rağmen) çok farklı diller, her ikisi de C + + ve C #, hem adil bir pay karıştırma gibi görünüyor.

C + + struct public üyesi görünürlük varsayılan gerçekten s için class varsayılan süre private. C # struct değer türlerini bildirmek için kullanıldığı are passed by value (note that the stack allocation is an implementation detail, not a contract).

struct küçük yapmak basit veri yapıları için: Genellikle iki dilde struct ve class should temsil ne aynı fikri var gibi görünüyor sınıflar işlemek için devlet ve yöntemler varken, verileri tutarak daha. Veri yapıları sadece iken bazı beton ya da soyut anlamda nesneler oluşturmak için kullanılır: yapısal bir formda veri; Onlar bu verilerle çok yapmak gerekiyor veya ne olduğunu bile veri bilmiyorum. Esasen onlar aptal konum ve umurumda değil.

Ama bu dil tasarımcıları onlar kullanılması gerektiğini düşündüm sadece nasıl. İnsanlar iyi olan yanlış kullanarak şeyleri öyle değil, her struct basit, aptal veri yapısı olabilir görmek ve her class Sen dolu bir tam teşekküllü bir sınıf olabilir bakın yöntemleri ve etajer. Bu sadece bir kongre ve insanlar onu takip ederseniz başkalarının koduna bakmak ve görmek "Ah, o bir struct Bu yüzden burada çok mantık beklemek ve daha ilginç şeyler üzerinde hareket etmezler güzel." İşe yarayabilir ... teoride.

ETA: Eğer PHP veya Java özellikle ilgilenen bir açıklamada belirtilen beri iki dilde not class sözdizimi veya dil seviyesinde herhangi bir ayrım var mı veya struct hangi soru biraz garip olarak beni grev nedeni budur. Java ve PHP hem de ne olursa olsun orada olan her şeyi mantık veya fiili sınıfları olmadan sadece veri yapıları olup olmadığı, sınıflar gibi şeyler Modele.

Bu tamamen bağımlı bir dildir, bu nedenle tek bir doğru cevap olabilir. Belirli bir dil ile ilgilenen iseniz, söz bunu belirtiniz.

OO açıdan bakıldığında, hiçbir fark yoktur. Her ikisi de (dil bunları destekliyorsa ve özellikleri) yöntemleri ile bir kamu API var türleridir.

Teknik açıdan bakıldığında, birçok farklılıklar olabilir, ama bu dil ve / veya platform bağlıdır.

Bu OO tasarım söz konusu olduğunda, ben sadece bana hiçbir ek yetenekleri ya da özellikleri verir gibi bir yapı gibi bir şey hiç var olduğunu görmezden seçin. Biz uygulanması derinliklerine dalmak gibi, bir sınıf daha iyi bir yapı olarak uygulanacak dışarı çıkabilir, ama saf implementation detail.

Yapı ve Sınıflar arasındaki fark

-The major difference between class and structure is that the declaration of structure starts with the keyword 'struct' whereas on the other hand, a class starts with the keyword 'class'. -In class the data member and member are private by default whereas in structure they are public by default. -Data hiding is supported in classes but not in structure. -Structure deals with variables only whereas objects deal with real-world objects.

-If we explicitly specify the access type of each member, then a structure will behave exactly as a class.

Sınıflar Referans türleri ve Yapıları değerler türleridir. Bir temel sınıf için bir erişim-belirticisinin yokluğunda, türetilmiş sınıf yapı ilan edildiğinde halk varsayılır ve özel sınıf sınıf ilan edildiğinde varsayılır.