Konsep Inheritance pada C++

Pada tutorial sebelumnya kita telah mempelajari tentang Konsep Enkapsulasi yang juga merupakan salah satu konsep penting dalam bahasa pemrograman berorientasi objek. Kali ini kita tidak masih membahas konsep yang tidak kalah pentingnya yaitu Inheritance atau dalam bahasa Indonesia adalah Pewarisan.

Inheritance atau pewarisan adalah konsep yang penting dalam setiap bahasa pemrograman berorientasi objek. Dengan adanya pewarisan memungkinkan programer membuat kelas baru yang sifat-sifatnya berdasar pada kelas lain. Hal ini juga memberi kita kesempatan untuk menggunakan kembali kode-kode yang telah ada.

Kelas Induk dan Kelas Turunan

Pada konsep Inheritance dikenal istilah kelas induk atau base class dan kelas turunan atau derived class.

Ilustrasi single inheritance pada C++

Pada bahasa pemrograman OOP ketika suatu kelas induk melakukan pewarisan ke kelas turunan maka sifat-sifat dari kelas induk akan dimiliki oleh kelas turunan dengan memperhatikan spesifikasi akses nya. Cara membuat kelas sebagai turunan kelas lain adalah sebagi berikut:

class kelasTurunan:spesifikasiAkses kelasInduk{
  .....
}

Spesifikasi akses adalah

  • public
  • protected
  • private

Contoh lengkapnya adalah sebagai berikut:

// Base class
class Shape {
   public:
      void setWidth(int w) {
         width = w;
      }
      void setHeight(int h) {
         height = h;
      }
      
   protected:
      int width;
      int height;
};

// Derived class
class Rectangle: public Shape {
   public:
      int getArea() { 
         return (width * height); 
      }
};

Pada potongan kode diatas terdapat kelas induk bernamaShapedan kelas turunan bernama Rectangle. jika seperti ini maka attribut Shape seperti variabel height,width dan setternya akan dimiliki oleh rectangle, hal ini dapat dilihat di method getArea dari kelas Rectangle yang dapat mengakses attribut width dan height.

Kontrol akses dalam Inheritance

Suatu kelas turunan dapat mengakses semua member kelas induk selama member tersebut tidak dideklarasikan dengan spesifikasi akses private.

Suatu kelas turunan dapat diwarisi semua method dari kelas induk dengan pengecualian:

  • Constructor, destructor dan copy constructor dari kelas induk.
  • Operator overloading dari kelas induk.
  • fungsi kelas dasar yang yang dideklarasikan sebagai friend function.
  • Member yang bersifat private

Jenis Inheritance pada C++

Dalam melakukan pewarisan pada bahasa C++, diperlukan penulisan spesifikasi akses terlebih dahulu, hal ini dikarenakan kita harus menentukan jenis pewarisannya.

Kita mengenal 3 jenis pewarisan dalam bahasa C++ yaitu public,protected,private.

Walaupun pada praktiknya pewarisan publik lah yang paling sering digunakan, berikut ini adalah penjelasan dari masing-masing jenis pewarisan.

  • Pewarisan Public – ketika kita menentukan pewarisan sebagai public maka setiap member turunan dari kelas dasar akan memiliki spesifikasi akses yang sama dengan spesifikasi aksesnya saat ada di kelas dasar.
  • Pewarisan Protected – Ketika kita menentukan pewarisan sebagai protected maka setiap member public dan protected dari kelas dasar akan memiliki spesifikasi akses protected.
  • Pewarisan Private – Ketika kita menentukan pewarisan sebagai private maka member public dan protected akan menjadi private.

Multiple Inheritance

ilustrasi multiple inheritance C++

Dalam bahasa C++ kita dapat membuat kelas yang diwarisi oleh banyak kelas lain, hal ini sangat berbeda dari bahasa-bahasa OOP lain seperti java,C# ataupun PHP.

Format sintaks C++ ketika kita ingin melakukan multiple inheritance adalah sebagai berikut:

class kelasTurunan:spesifikasiAkses kelasInduk1,spesifikasiAkses kelasInduk2{....}

 

Sumber

https://www.tutorialspoint.com/cplusplus/cpp_inheritance.htm

http://www.cplusplus.com/doc/tutorial/inheritance/

Leave a Reply