Apa itu kelas, objek, dan instance di Java?
Jawaban:
Java (dan bahasa pemrograman lainnya) dimodelkan dalam hal jenis dan nilai . Pada tingkat teoritis, nilai adalah representasi untuk beberapa kuantum informasi, dan tipe adalah sekumpulan nilai. Ketika kita mengatakan nilai X adalah turunan dari tipe Y, kita hanya mengatakan bahwa X adalah anggota dari himpunan nilai yang merupakan tipe Y.
Jadi itulah arti sebenarnya dari istilah "contoh": itu menggambarkan hubungan, bukan sesuatu.
Sistem tipe bahasa pemrograman Java mendukung dua tipe tipe, tipe primitif dan tipe referensi . Jenis referensi selanjutnya dibagi menjadi kelas dan jenis array . Objek Java adalah turunan dari tipe referensi.
Objek adalah turunan kelas atau larik. ( JLS 4.3.1 )
Itulah tipe pandangan teoritis.
Dalam praktiknya, sebagian besar pengembang Java memperlakukan kata "instance" dan "object" sebagai sinonim. (Dan itu termasuk saya, lalu saya mencoba menjelaskan sesuatu dengan cepat.) Dan sebagian besar pengembang menggunakan kata "nilai" daripada "contoh" untuk merujuk ke contoh dari tipe primitif.
user2390183
. Anda memperlakukan variabel sebagai "nama". Mereka tidak. Variabel adalah "pemegang referensi" yang berisi referensi ke objek. Objek tidak memiliki nama intrinsik. Referensi adalah hal yang paling dekat dengan "nama" untuk suatu objek, kecuali bahwa mereka tidak memiliki representasi konstan. (GC dapat memindahkan objek yang mengubah pola bit yang digunakan untuk mewakili referensi.)
Sebuah kelas adalah cetak biru yang Anda gunakan untuk membuat objek . Objek adalah turunan dari kelas - itu adalah 'hal' konkret yang Anda buat menggunakan kelas tertentu. Jadi, 'object' dan 'instance' adalah hal yang sama, tetapi kata 'instance' menunjukkan hubungan suatu objek dengan kelasnya.
Ini mudah dimengerti jika Anda melihat contoh. Misalnya, Anda memiliki kelas House
. Rumah Anda sendiri adalah sebuah objek dan merupakan contoh kelas House
. Rumah saudara perempuan Anda adalah objek lain (contoh kelas lainnya 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();
Kelas House
mendeskripsikan konsep rumah, dan ada rumah beton khusus yang merupakan objek dan contoh kelas House
.
Catatan: Ini persis sama di Java seperti di semua bahasa pemrograman berorientasi objek.
class House {
// blue print for House Objects
}
class Car {
// blue print for Instances of Class Car
}
House myHouse = House new();
Car myCar = Car new();
Kelas pada dasarnya adalah definisi, dan berisi kode objek. Objek adalah turunan dari kelas
Misalnya jika Anda berkata
String word = new String();
kelas tersebut adalah kelas String, yang mendeskripsikan objek (instance) kata.
Ketika sebuah kelas dideklarasikan, tidak ada memori yang dialokasikan sehingga kelas tersebut hanyalah sebuah template.
Ketika objek kelas dideklarasikan, memori dialokasikan.
static
variabel kelas. (Dan untuk hal-hal lain juga yang terkait dengan jenis identitas kelas.)
Saya suka penjelasan Jesper dalam istilah awam
Dengan mengimprovisasi contoh dari jawaban Jesper,
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 dan myCar adalah objek
myHouse adalah turunan dari Rumah (menghubungkan Object-myHouse dengan Rumah Kelasnya) myCar adalah turunan dari Mobil
pendeknya
"MyHouse adalah contoh dari Kelas Rumah" yang sama dengan mengatakan "Myhouse merupakan Obyek dari tipe rumah"
Kelas adalah Tipe Data, Anda menggunakan tipe ini untuk membuat objek.
Contoh adalah Logis tetapi objek adalah Fisik berarti menempati beberapa memori.
Kita dapat membuat sebuah instance untuk kelas abstrak dan juga untuk antarmuka, tetapi kita tidak dapat membuat
objek untuk itu.
Objek adalah turunan dari kelas dan contoh berarti perwakilan dari kelas yaitu objek.
Instance mengacu pada Referensi suatu objek.
Objek sebenarnya menunjuk ke alamat memori dari instance itu.
Anda tidak dapat melewatkan contoh di atas lapisan tetapi Anda dapat meneruskan objek di atas lapisan
Anda tidak dapat menyimpan sebuah instance tetapi Anda dapat menyimpan sebuah objek
Satu objek dapat memiliki lebih dari satu contoh.
Instance akan memiliki definisi kelas dan definisi objek di mana seperti dalam objek hanya akan memiliki definisi objek.
Sintaks Objek:
Classname var=new Classname();
Tetapi untuk pembuatan contoh itu hanya mengembalikan pointer yang merujuk ke suatu objek, sintaksnya adalah:
Classname varname;
Di java, objek muncul di memori heap. Ini membutuhkan referensi untuk diarahkan dan digunakan dalam aplikasi kita. Referensi memiliki lokasi memori dari objek yang dapat kita gunakan untuk menggunakan objek dalam aplikasi kita. Referensi singkatnya tidak lain adalah nama variabel yang menyimpan alamat dari objek yang dibuat di lokasi memori.
An instance
adalah istilah umum untuk object
. FYI, Object
adalah sebuah kelas.
Sebagai contoh,
Class A{
}
A ref = new A();
Untuk potongan kode di atas, ref adalah referensi untuk objek kelas A yang dihasilkan di heap.
Sejujurnya, saya merasa lebih nyaman dengan definisi blog Alfred :
Objek : objek dunia nyata memiliki 2 karakteristik utama, keadaan dan perilaku. Manusia memiliki status (nama, umur) dan perilaku (berlari, tidur). Mobil memiliki keadaan (kecepatan saat ini, gigi saat ini) dan perilaku (menggunakan rem, mengganti gigi). Objek perangkat lunak secara konseptual mirip dengan objek dunia nyata: mereka juga terdiri dari keadaan dan perilaku terkait. Sebuah objek menyimpan statusnya dalam bidang dan memperlihatkan perilakunya melalui metode.
Kelas : adalah "template" / "cetak biru" yang digunakan untuk membuat objek. Pada dasarnya kelas terdiri dari field, static field, method, static method dan constructor. Field digunakan untuk menampung status kelas (misal: nama objek siswa). Metode digunakan untuk merepresentasikan perilaku kelas (misal: bagaimana sebuah benda siswa akan berdiri). Pembuat digunakan untuk membuat Mesin Virtual baru dari Kelas.
Instance : Instance adalah salinan unik dari Class yang mewakili Object. Ketika sebuah instance baru dari sebuah kelas dibuat, JVM akan mengalokasikan ruang memori untuk instance kelas tersebut.
Diberikan contoh berikut:
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);
}
}
Untuk kasus 1, ada dua instance dari class Person, tetapi kedua instance tersebut mewakili objek yang sama.
Untuk kasus 2, ada dua instance dari class Person, tetapi setiap instance mewakili objek yang berbeda.
Jadi kelas, objek dan contoh adalah hal yang berbeda. Objek dan contoh bukanlah sinonim seperti yang disarankan dalam jawaban yang dipilih sebagai jawaban yang benar.
Jika Anda memiliki program yang memodelkan mobil Anda memiliki kelas untuk mewakili mobil, maka dalam Kode Anda dapat mengatakan:
Car someCar = new Car();
someCar sekarang merupakan instance dari kelas Car. Jika program digunakan di bengkel dan someCar mewakili mobil Anda di sistem mereka, maka mobil Anda adalah objeknya.
Jadi Mobil adalah kelas yang dapat mewakili setiap mobil dunia nyata someCar adalah turunan dari kelas Mobil dan someCare mewakili satu objek kehidupan nyata (mobil Anda)
Namun instance dan objek sangat sering digunakan secara bergantian ketika membahas pengkodean
someCar
adalah referensi ke instance Mobil. Instance itu sendiri tidak memiliki nama.
Semua jenis data yang disimpan dan diproses komputer Anda dalam representasi paling dasar berupa deretan bit. Cara bit tersebut diinterpretasikan dilakukan melalui tipe data. Tipe data bisa primitif atau kompleks. Tipe data primitif adalah - misalnya - int atau double. Mereka memiliki panjang tertentu dan cara penafsiran yang spesifik. Dalam kasus integer, biasanya bit pertama digunakan untuk tanda, yang lain digunakan untuk nilainya.
Tipe data kompleks dapat merupakan kombinasi dari tipe data primitif dan kompleks lainnya dan disebut "Kelas" di Java.
Anda dapat menentukan tipe data kompleks PeopleName yang terdiri dari dua String yang disebut nama depan dan belakang. Setiap String di Java adalah tipe data kompleks lainnya. String sebagai gantinya (mungkin) diimplementasikan menggunakan tipe data primitif char yang Java tahu berapa banyak bit yang mereka ambil untuk disimpan dan bagaimana menafsirkannya.
Saat Anda membuat instance dari tipe data, Anda mendapatkan objek dan komputer Anda menyimpan beberapa memori untuk itu dan mengingat lokasinya dan nama instance itu. Sebuah instance PeopleName dalam memori akan mengambil ruang dari dua variabel String ditambah sedikit lebih banyak untuk pembukuan. Integer membutuhkan 32 bit di Java.
Tipe data kompleks dapat memiliki metode yang ditugaskan padanya. Metode dapat melakukan tindakan pada argumennya atau pada contoh tipe data tempat Anda memanggil metode ini. Jika Anda memiliki dua instance PeopleName yang disebut p1 dan p2 dan Anda memanggil metode p1.getFirstName (), metode ini biasanya mengembalikan nama depan orang pertama tetapi bukan orang kedua.
Konsep di balik kelas dan objek adalah untuk merangkum logika ke dalam unit pemrograman tunggal. Kelas adalah cetak biru dari objek yang dibuat.
Berikut contoh kelas yang mewakili Mobil:
public class Car {
int currentSpeed;
String name;
public void accelerate() {
}
public void park() {
}
public void printCurrentSpeed() {
}
}
Anda dapat membuat contoh dari objek Car seperti ini:
Car audi = new Car();
Car toyota = new Car();
Saya telah mengambil contoh dari tutorial ini
Ia memiliki keberadaan logis, yaitu tidak ada ruang memori yang dialokasikan saat dibuat.
Ini adalah sekumpulan objek.
Kelas dapat dianggap sebagai cetak biru untuk membuat objek.
Itu dibuat dengan menggunakan kata kunci kelas
Sebuah kelas mendefinisikan metode dan anggota data yang akan dimiliki oleh Objek.
Ia memiliki keberadaan fisik, yaitu ruang memori dialokasikan ketika dibuat.
Ini adalah turunan dari kelas.
Objek adalah entitas unik yang berisi anggota data dan fungsi anggota bersama-sama dalam bahasa OOP.
Itu dibuat menggunakan kata kunci baru
Objek menentukan implementasi metode dan nilai yang akan dimiliki oleh anggota data di kelas.
Kelas adalah cetak biru yang dibutuhkan untuk membuat sebuah objek (= instance).
Perbedaan antara objek dan instance adalah, objek adalah benda dan instance adalah relasi.
Dengan kata lain, instance mendeskripsikan hubungan suatu objek dengan kelas tempat objek tersebut dibuat.
Definisi "Objek adalah turunan dari kelas", secara konseptual salah, tetapi benar sesuai implementasi. Sebenarnya fitur berorientasi objek diambil dari kehidupan nyata, untuk memfokuskan pikiran programmer dari lebih banyak ke lebih sedikit. Dalam kehidupan nyata kelas dirancang untuk mengelola objek. Misalnya kita manusia memiliki kasta, agama, kebangsaan dan banyak lagi. Para pemeran, agama, kebangsaan ini adalah kelas-kelas dan tidak ada kehidupan tanpa manusia. Namun dalam implementasinya tidak ada objek tanpa kelas. Objek- Objek adalah entitas diskrit yang memiliki beberapa atribut yang terdefinisi dengan baik. Di sini diskrit berarti sesuatu yang membuatnya unik dari yang lain. Atribut yang terdefinisi dengan baik masuk akal dalam beberapa konteks. Klasifikasi- Klasifikasi objek yang memiliki perilaku atau objek yang sama.
Meskipun jawaban di atas benar, cara berpikir lain tentang Kelas dan Objek adalah dengan menggunakan contoh dunia nyata: Kelas bernama Hewan mungkin berisi objek seperti Kucing, Anjing atau Ikan. Objek dengan judul Alkitab akan menjadi kelas Buku, dll. Kelas umum, objek spesifik. Contoh pemikiran ini membantu saya ketika saya belajar Java.
Animal
itu sebuah kelas dan Cat
merupakan sebuah contoh, apa kucing pus kesayangan saya "Fluffy"?
Kelas adalah templat atau tipe. Objek adalah turunan dari kelas.
Sebagai contoh:
public class Tweet {
}
Tweet newTweet = new Tweet();
Tweet adalah kelas dan newTweet adalah objek kelas.