C# – Inheritance

Salah satu konsep paling penting dalam pemrograman berorientasi objek adalah pewarisan (inheritance). Pewarisan memungkinkan kita untuk mendefinisikan suatu kelas berdasarkan kelas lainnya, yang membuatnya lebih mudah untuk membuat dan memelihara aplikasi. Hal ini juga memberikan kesempatan untuk memanfaatkan kembali fungsionalitas kode dan mempercepat waktu implementasi.

Ketika kita membuat suatu kelas, daripada menulis anggota data dan anggota fungsi yang baru, programmer dapat menunjukkan bahwa kelas baru tersebut mewarisi anggota dari kelas yang sudah ada. Kelas yang sudah ada disebut kelas induk (base class), sedangkan kelas baru disebut kelas turunan (derived class).

Konsep pewarisan mengimplementasikan hubungan IS-A. Misalnya, mammal IS A animal (mamalia adalah binatang), dog IS-A mammal (anjing adalah mamalia), sehingga dog IS-A animal juga (anjing adalah binatang juga), dan seterusnya.

Base and Derived Classes

Sebuah class dapat diturunkan lebih dari satu class atau interface, yang berarti bisa mewarisi data dan fungsi dari beberapa class atau interface.

Berikut ini adalah sintaks yang digunakan dalam C# untuk membuat kelas turunan:

class binatang {
   ...
}

class kucing : binatang {
   ...
}

Pertimbangkan kelas dasar Shape dan kelas turunannya Rectangle, misalnya:

using System;

namespace InheritanceApplication {
   class Shape {
      public void setWidth(int w) {
         width = w;
      }
      public void setHeight(int h) {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Derived class
   class Rectangle: Shape {
      public int getArea() { 
         return (width * height); 
      }
   }
   class RectangleTester {
      static void Main(string[] args) {
         Rectangle Rect = new Rectangle();

         Rect.setWidth(5);
         Rect.setHeight(7);

         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.ReadKey();
      }
   }
}

Ketika kode di atas di-compile dan dijalankan, hasilnya bakal muncul seperti ini:

Total area: 35

Initializing Base Class

Kelas turunan itu dapet ngambil variabel dan method dari kelas dasarnya. Jadi, objek kelas utamanya harus dibuat dulu sebelum objek kelas turunannya. Kamu bisa kasih instruksi buat inisialisasi kelas utamanya di dalam daftar inisialisasi anggota.

Program berikut ini nunjukin contohnya:

using System;

namespace RectangleApplication {
   class Rectangle {
      
      //member variables
      protected double length;
      protected double width;
      
      public Rectangle(double l, double w) {
         length = l;
         width = w;
      }
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle  
   class Tabletop : Rectangle {
      private double cost;
      public Tabletop(double l, double w) : base(l, w) { }
      
      public double GetCost() {
         double cost;
         cost = GetArea() * 70;
         return cost;
      }
      public void Display() {
         base.Display();
         Console.WriteLine("Cost: {0}", GetCost());
      }
   }
   class ExecuteRectangle {
      static void Main(string[] args) {
         Tabletop t = new Tabletop(4.5, 7.5);
         t.Display();
         Console.ReadLine();
      }
   }
}

Ketika kode di atas di-compile dan dijalankan, hasilnya bakal muncul seperti ini:

Length: 4.5
Width: 7.5
Area: 33.75
Cost: 2362.5

Multiple Inheritance in C#

C# nggak mendukung multiple inheritance (pewarisan ganda). Tapi, kamu bisa menggunakan interface untuk mengimplementasikan multiple inheritance. Program berikut ini nunjukin contohnya:

using System;

namespace InheritanceApplication {
   class Shape {
      public void setWidth(int w) {
         width = w;
      }
      public void setHeight(int h) {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Base class PaintCost
   public interface PaintCost {
      int getCost(int area);
   }
   
   // Derived class
   class Rectangle : Shape, PaintCost {
      public int getArea() {
         return (width * height);
      }
      public int getCost(int area) {
         return area * 70;
      }
   }
   class RectangleTester {
      static void Main(string[] args) {
         Rectangle Rect = new Rectangle();
         int area;
         
         Rect.setWidth(5);
         Rect.setHeight(7);
         area = Rect.getArea();
         
         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.WriteLine("Total paint cost: ${0}" , Rect.getCost(area));
         Console.ReadKey();
      }
   }
}

Ketika kode di atas di-compile dan dijalankan, hasilnya bakal muncul seperti ini:

Total area: 35
Total paint cost: $2450

Leave a Reply

Your email address will not be published. Required fields are marked *