C # - Warisan
Salah satu konsep terpenting dalam pemrograman berorientasi objek adalah pewarisan. Inheritance memungkinkan kita untuk mendefinisikan kelas dalam istilah kelas lain, yang membuatnya lebih mudah untuk membuat dan memelihara aplikasi. Ini juga memberikan kesempatan untuk menggunakan kembali fungsionalitas kode dan mempercepat waktu implementasi.
Saat membuat kelas, alih-alih menulis anggota data dan fungsi anggota yang benar-benar baru, pemrogram dapat menetapkan bahwa kelas baru harus mewarisi anggota kelas yang sudah ada. Kelas yang ada ini disebutbase kelas, dan kelas baru disebut sebagai derived kelas.
Gagasan tentang warisan mengimplementasikan IS-Ahubungan. Misalnya mamaliaIS A hewan, anjing IS-A mamalia maka anjing IS-A hewan juga, dan sebagainya.
Kelas Dasar dan Turunan
Sebuah kelas dapat diturunkan dari lebih dari satu kelas atau antarmuka, yang berarti ia dapat mewarisi data dan fungsi dari beberapa kelas atau antarmuka dasar.
Sintaks yang digunakan dalam C # untuk membuat kelas turunan adalah sebagai berikut -
<acess-specifier> class <base_class> {
...
}
class <derived_class> : <base_class> {
...
}
Pertimbangkan bentuk kelas dasar dan kelas turunannya Persegi Panjang -
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 dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
Total area: 35
Menginisialisasi Kelas Dasar
Kelas turunan mewarisi variabel anggota kelas dasar dan metode anggota. Oleh karena itu, objek kelas super harus dibuat sebelum subkelas dibuat. Anda dapat memberikan instruksi untuk inisialisasi superclass dalam daftar inisialisasi anggota.
Program berikut menunjukkan ini -
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 dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
Length: 4.5
Width: 7.5
Area: 33.75
Cost: 2362.5
Beberapa Warisan di C #
C# does not support multiple inheritance. Namun, Anda dapat menggunakan antarmuka untuk menerapkan beberapa pewarisan. Program berikut menunjukkan ini -
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 dikompilasi dan dijalankan, itu menghasilkan hasil sebagai berikut -
Total area: 35
Total paint cost: $2450