Banner Java

Memahami Metoda toString Dari Kelas Object

Kelas Object berada di puncak teratas dalam hirarki turunan kelas di Java. Langsung maupun tidak langsung, semua kelas di Java merupakan turunan dari kelas Object. Kelas turunan akan mewarisi metoda-metoda yang dimiliki oleh kelas Object, termasuk di sini metoda spesial toString. Metoda toString akan mengembalikan nilai string yang merupakan representasi dari obyek.

Berikut ini adalah contoh program yang mendefinisikan kelas TitikKoordinat. Koordinat adalah bilangan yang digunakan untuk menunjukkan lokasi suatu titik dalam garis. Garis yang dimaksud adalah garis yang sejajar dengan sumbu x (absis) dan garis yang sejajar dengan sumbu y (ordinat). Hasil kompilasi kelas TitikKoordinat (TitikKoordinat.class) akan disimpan di direktori c:\filejava\javaapp\kelas\koordinat.

// Nama file : TitikKoordinat.java
// Mendefinisikan kelas TitikKoordinat

// Meletakkan kelas ke paket
package koordinat;

// Deklarasi kelas
public class TitikKoordinat {

   // Deklarasi variabel kelas (data field)
   private int x;
   private int y;

   // Konstruktor tanpa argumen (parameter)
   public TitikKoordinat() {
      // Secara implisit memanggil konstruktor tanpa argumen 
      // dari kelas Obyect.
   }

   // konstruktor kedua
   public TitikKoordinat(int x, int y) {
      this.x = x;
      this.y = y;
   }

   // Accessor sumbu x
   public int getX() {
      return x;
   }

   // Mutator sumbu x
   public void setX(int x) {
      this.x = x;
   }

   // Accessor sumbu y
   public int get() {
      return y;
   }

   // Mutator sumbu y
   public void setY(int y) {
      this.y = y;
   }
}

Kelas TitikKoordinat secara implisit merupakan turunan dari kelas Object. Karena turunan dari kelas Object, kelas TitikKoordinat akan mewarisi semua metoda yang dimiliki oleh kelas Object termasuk di sini adalah metoda toString. Kelas TitikKoordinat mendeklarasikan dua variabel kelas yaitu x dan y. Saat obyek dari kelas TitikKoordinat dikonstruksi, dua buah data field x dan y tersebut akan diberi nilai integer default 0.

Untuk mendemonstrasikan dan menguji metoda toString default yang diwarisi dari kelas Object, Anda dapat mendeklarasikan kelas main DemoTitikKoordinat1 sebagaimana kode program berikut ini:

// Mengimpor kelas
import koordinat.TitikKoordinat;
import javax.swing.JOptionPane;

// Deklarasi kelas
public class DemoTitikKoordinat1 {

   // Metoda main
   public static void main(String[ ] args) {

      String str;

      //Membuat obyek dari kelas TitikKoordinat
      TitikKoordinat titik = new TitikKoordinat(3, 7);

      // Menampilkan hasil metoda toString()
      str = "Menggunakan metoda toString() default dari kelas Object.";
      str += "\nHasil metoda toString : " + titik;

      JOptionPane.showMessageDialog(null, str, "Metoda toString()",
         JOptionPane.INFORMATION_MESSAGE);

      // Mengakhiri aplikasi
      System.exit(0);

   }
}

Baris nomor 18 adalah pernyataan untuk mencetak obyek TitikKoordinat yang diwakili oleh variabel acuan titik yang mengacu ke obyek kelas TitikKoordinat. Secara internal, pernyataan tersebut sama dengan memanggil metoda toString kelas Object. Panggilan ke metoda toString yang diwarisi secara default dari kelas Object akan menghasilkan nilai string koordinat.TitikKoordinat@934b1. Format string ini terdiri dari nama kelas (TitikKoordinat), “@” dan versi nilai hexadecimal dari hashcode obyek. Nilai default metoda hashCode suatu obyek secara khusus diimplementasikan dengan mengkonversi nilai alamat memori (memory address) obyek ke nilai integer. Apabila sebuah kelas yang digunakan diimpor dari suatu paket, maka nama paket juga disertakan (koordinat).

Nampak bahwa string yang dihasilkan kurang deskriptif dan tidak menggambarkan obyek dari kelas TitikKoordinat itu sendiri. Untuk menghasilkan nilai string yang lebih mempunyai arti, Anda perlu mendeklarasikan ulang metoda toString di kelas TitikKoordinat dengan nama, tipe nilai yang dikembalikan dan parameter (baik jumlah, urutan maupun tipe data) yang sama.

Berikut ini adalah kode program kelas TitikKoordinat yang mendeklarasikan ulang metoda toString. Pendeklarasian ulang metoda toString dari kelas Object yang sama persis di kelas TitikKoordinat dikenal dengan istilah overriding. Berikut ini adalah contoh program kelas TitikKoordinat yang telah dimodifikasi:

// Nama file : TitikKoordinat.java
// Mendefinisikan kelas TitikKoordinat

// Meletakkan kelas ke paket
package koordinat;

// Deklarasi kelas
public class TitikKoordinat {

   // Deklarasi variabel kelas (data field)
   private int x;
   private int y;

   // Konstruktor tanpa argumen (parameter)
   public TitikKoordinat() {
      // Secara implisit memanggil konstruktor tanpa argumen 
      // dari kelas Object.
   }

   // konstruktor kedua
   public TitikKoordinat(int x, int y) {
      this.x = x;
      this.y = y;
   }

   // Accessor sumbu x
   public int getX() {
      return x;
   }

   // Mutator sumbu x
   public void setX(int x) {
      this.x = x;
   }

   // Accessor sumbu y
   public int getY() {
      return y;
   }
   
   // Mutator sumbu y
   public void setY(int y) {
      this.y = y;
   }

   // Overriding metoda toString() dari kelas Object
   // Menghasilkan nilai string yang menggambarkan kelas TitikKoordinat
   public String toString() {
      return "[" + x + ", " + y + "]";
   }
}

String yang dikembalikan oleh metoda toString yang diwarisi secara default dari kelas Object kurang deskriptif. Setiap subclass dapat mendeklarasikan ulang metoda tersebut dan memberi implementasi berbeda yang lebih menggambarkan subclass. Baris nomor 48 – 50 adalah deklarasi ulang metoda toString di kelas TitikKoordinat (method overriding). Kelas TitikKoordinat akan menggunakan metoda toString yang dideklarasikan sendiri untuk lebih menggambarkan obyek kelas TitikKoordinat, sedangkan metoda toString di superclassnya akan diabaikan. Apabila dirasakan perlu, hendaknya kelas turunan mendeklarasikan ulang metoda yang dimiliki oleh superclassnya.

Untuk mendemonstrasikan dan menguji ulang metoda toString yang berada di kelas TitikKoordinat, Anda dapat mendeklarasikan kelas main DemoTitikKoordinat2. Berikut ini adalah contoh program dan hasil eksekusinya:

// Deklarasi kelas DemoTitikKoordinat2
public class DemoTitikKoordinat2 {

   // Metoda main
   public static void main(String[ ] args) {

      String str;

      // Membuat obyek dari kelas TitikKoordinat
      TitikKoordinat titik2 = new TitikKoordinat(7, 10);

      str = "Menggunakan Kelas TitikKoordinat";
      str += "\nKoordinat x : " + titik2.getX();
      str += "\nKoordinat y : " + titik2.getY();
      str += "\nTitik koordinat : " + titik2;

      // Titik koordinat dimodifikasi
      str += "\n\nMemodifikasi koordinat : x = 12 dan y = 15";
      titik2.setX(12);
      titik2.setY(15);
      str += "\nKoordinat x : " + titik2.getX();
      str += "\nKoordinat y : " + titik2.getY();
      str += "\nTitik koordinat : " + titik2;

      // Menampilkan hasil
      JOptionPane.showMessageDialog(null, str, "Kelas TitikKoordinat",
         JOptionPane.INFORMATION_MESSAGE);

      // Mengakhiri aplikasi berpenampilan GUI
      System.exit(0);
   }
}

Baris nomor 22 dan 30 adalah pernyataan untuk menggabungkan literal string “Titik koordinat” dengan nilai string yang merupakan hasil representasi obyek kelas TitikKoordinat yang diacu oleh variabel titik2. Anda hanya perlu menyertakan variabel acuan titik2 untuk menghasilkan string yang merepresentasikan obyek dari kelas TitikKoordinat atau Anda juga dapat menggunakan titik2.toString untuk menghasilkan nilai string yang sama.

Untuk memperbaiki mutu konten, Anda dapat berpartisipasi dengan cara melaporkan apabila menemukan kesalahan ketik, kata-kata rangkap, redaksi kurang pas (jelas), gambar pendukung tidak ada dan sebagainya melalui form Kontak Kami untuk mendapatkan perbaikan. Terima kasih atas kerjasamanya.

Hindro HindriantoHindro adalah pendiri sekaligus admin termasmedia.com dan topikit.com, blog online yang mengulas teknologi informasi. Dunia web mulai ditekuni tahun 2012 dengan mempelajari CMS Joomla dan Wordpress. Beberapa buku yang sekarang dipelajari antara lain PHP, HTML5, ASP.NET 4.5, JavaScript, CSS3, MySQL, Adobe Dreamweaver, Adobe Photoshop dan Adobe Flash.