Java memandang segala sesuatu di dunia sebagai obyek. Meja, kursi, lingkaran, persegi panjang, hutang dan piutang dapat dipandang sebagai obyek di Java. Obyek mewakili entitas di dalam dunia nyata dan dapat dikenali secara berbeda. Object-oriented programming (OOP) di Java berhubungan dengan memprogram menggunakan obyek. Setiap obyek mempunyai identitas berbeda yang dapat dilihat dari data dan metoda yang dimiliki. Data sebuah obyek menggambarkan keadaan (state) dari obyek tersebut, sedangkan metoda menggambarkan aktifitas (behavior) yang dapat dilakukan oleh sebuah obyek.

Sebagai contoh, sebuah bidang datar persegi panjang mempunyai data field berupa panjang dan lebar. Dari data tersebut, keliling dan luas persegi panjang dapat dihitung menggunakan metoda mencariLuasPP dan mencariKelilingPP. Menghitung keliling dan luas sebuah persegi panjang adalah gambaran dari aktifitas yang dapat dilakukan oleh bidang datar persegi panjang. Java menggunakan variabel untuk mendefinisikan data field dan metoda untuk mendefinisikan aktifitas.

Java juga mempunyai metoda khusus yang disebut dengan konstruktor (constructor) yang digunakan untuk mengkonstruksi atau menyusun obyek dari sebuah kelas. Sebagaimana dengan metoda, konstruktor juga dapat menjalankan aksi. Konstruktor didesain untuk melakukan penginisialisian data field sebuah obyek. Berikut ini adalah kode program kelas PersegiPanjang yang akan digunakan untuk membuat obyek persegi panjang. Kelas ini tidak mempunyai metoda main sehingga tidak dapat dijalankan. Kelas PersegiPanjang semata-mata hanyalah definisi yang digunakan untuk mendeklarasikan dan membuat obyek PersegiPanjang.

Sebuah metoda dapat dideklarasikan secara berulang-ulang dengan nama sama tetapi mempunyai parameter berbeda (overloaded method). Konstruktor juga dapat dideklarasikan secara berulang-ulang dengan nama sama tetapi dengan parameter berbeda (overloaded constructor). Konstruktor sebuah kelas mempermudah pengkonstruksian obyek dengan nilai data awal yang bisa berbeda. Nama konstruktor harus sama dengan nama kelas yang dideklarasikan. Konstruktor itu sendiri, tidak mempunyai tipe nilai yang dikembalikan (return type) maupun nilai yang dikembalikan (return value).

Contoh program berikut ini adalah definisi kelas PersegiPanjang yang akan digunakan untuk mendeklarasikan dan membuat obyek dari kelas PersegiPanjang. Pada kode program tersebut, dideklarasikan dua buah variabel kelas yaitu panjang dan lebar dengan tipe data double dan nilai awal 1.0. Variabel kelas tersebut merupakan data field yang dimiliki oleh kelas PersegiPanjang. Data field juga disebut dengan data member dari kelas PersegiPanjang. Kelas PersegiPanjang juga mendeklarasikan dua buah konstruktor dengan argumen berbeda (baris nomor 7 – 8 dan 11 - 14) dan dua buah metoda mencariKelilingPP dan mencariLuasPP (baris nomor 17 – 19 dan 22 - 24).

class PersegiPanjang {

   // Data field PersegiPanjang
   double panjang = 1.0;
   double lebar = 1.0;

   // Konstruktor pertama
   PersegiPanjang() {
   }

   // Konstruktor kedua
   PersegiPanjang(double x, double y) {
      panjang = x;
      lebar = y;
   }
   
   // Metoda mencari keliling
   double mencariKelilingPP() {
      return 2 * (panjang * lebar);
   }

   // Metoda memcari luas
   double mencariLuasPP() {
      return panjang * lebar;
   }
}

Kode program di atas mendefinisikan kelas PersegiPanjang yang digunakan untuk mendeklarasikan dan membuat obyek dari kelas PersegiPanjang. Dari kode program tersebut, dideklarasikan dua buah variabel kelas yaitu panjang dan lebar dengan tipe data double dan nilai awal 1.0. Variabel kelas tersebut merupakan data field yang dimiliki oleh kelas PersegiPanjang. Di Java, data field juga disebut dengan data member. Kelas PersegiPanjang juga mendeklarasikan dua buah konstruktor dengan argumen berbeda (baris nomor 8 - 9 dan 12 - 15) dan dua buah metoda mencariKelilingPP dan mencariLuasPP (baris nomor 18 - 20 dan 23 - 25).