Variabel instan adalah bagian dari data dalam pemrograman berorientasi objek yang memiliki nilai uniknya sendiri untuk setiap objek di mana ia berada. Variabel instans juga dapat disebut anggota instans, bidang non-statis, dan anggota data. Mereka adalah bagian penting dari sebagian besar objek, menyimpan potongan data tertentu yang digunakan objek untuk perhitungan.
Misalnya, jika ada dua objek, A dan B, di mana objek A memiliki variabel instan yang disebut “blah”, dan objek B juga memiliki variabel instan yang disebut “blah”, kedua variabel “blah” adalah entitas yang berbeda. Setiap variabel dikaitkan dengan objek yang merangkumnya. Nama lengkap variabel “blah” yang terkait dengan objek A adalah “A.blah”, sedangkan nama lengkap variabel “blah” yang terkait dengan objek B adalah “B.blah”. Masing-masing jika variabel tersebut dapat memiliki nilai tersendiri. Jika objek A dan B memiliki tipe yang sama, dan objek lain dari tipe itu, C, dibuat, dan objek C juga akan memiliki variabel instan “blah”, yang dapat memiliki nilai uniknya sendiri.
Variabel instan sering dikacaukan dengan variabel statis, tetapi keduanya berbeda secara signifikan. Berbeda dengan variabel instan, di mana setiap objek dari tipe tertentu memilikinya sendiri, variabel statis hanya memiliki satu nilai, dan nilai ini sama untuk setiap objek dari tipe yang sesuai. Variabel statis sering disebut variabel kelas, yang tidak sama dengan variabel instan.
Bergantung pada properti visibilitas yang diberikan padanya, variabel instan mungkin hanya terlihat di dalam objek tertentu, ke objek dan subkelasnya, atau ke objek tempat ia berada serta objek lainnya. Jenis visibilitas terakhir, yang disebut visibilitas publik, sering dianggap sebagai praktik buruk misalnya variabel, karena mudah melanggar prinsip enkapsulasi dalam pemrograman berorientasi objek. Meskipun tabu ini, ada kalanya variabel instans publik berguna. Misalnya, banyak kelas standar di Java memiliki variabel instans publik, yang terkadang memungkinkan modifikasi properti dengan mudah.
Visibilitas variabel instan juga ikut bermain dengan pewarisan. Jika satu kelas mewarisi dari yang lain, ini tidak segera memberikan kedua kelas akses ke variabel instan masing-masing. Variabel instance private di superclass dan subclass tetap dibatasi hanya untuk kelas-kelas tersebut, sehingga variabel private di subclass tidak dapat dilihat oleh superclass, dan sebaliknya. Satu-satunya variabel instan yang dapat dilihat oleh superclass dan subclass adalah variabel yang dilindungi di superclass.