Abstract class adalah class yang belum dapat di inisialisasi. Kenapa? Well, ya karena masih abstrak. Abstract class merupakan sebuah templat, sendangkan class biasa merupakan cetakan. Jika suatu class didefinisikan sebagai abstract, maka subclass-nya wajib melakukan implementasi semua method abstract di dalamnya.

Contoh abstract class adalah sebagai berikut :


using UnityEngine;

abstract class BangunDatar {
    public abstract float HitungLuas();
    public abstract float HitungKeliling();
}

Sebuah abstract juga dapat menjadi subclass dari class biasa.


class BangunAnu(){
    public virtual float HitungAnu() {
     // kode menghitung anu
    }
};

abstract class BangunDatar : BangunAnu {
    public abstract override int HitungAnu();
    public abstract float HitungLuas();
    public abstract float HitungKeliling();

}

class Segitiga : BangunDatar{
    public  override float HitungAnu(){
       // implementasi kode menghitung anu yang baru
    }
    public float HitungLuas(){
       // implementasi hitung luas
    }
    public float HitungKeliling(){
       // implementasi hitung keliling
    }
}


Contoh Implementasi

Kita akan gunakan lagi abstract class BangunDatar di atas.


abstract class BangunDatar {
    public abstract float HitungLuas();
    public abstract float HitungKeliling();
}

Kemudian, kita implementasikan ke dalam subclass Segitiga dan BujurSangkar.


class SegitigaSikuSiku : BangunDatar
{
    private float alas;
    private float tinggi;

    public SegitigaSikuSiku(float alas, float tinggi)
    {
        this.alas   = alas;
        this.tinggi = tinggi;
    }

    public override float HitungKeliling()
    {
        float sisiMiring = Mathf.Sqrt((Mathf.Pow(alas,2) + (Mathf.Pow(tinggi,2))));
        return alas + tinggi + sisiMiring;
    }

    public override float HitungLuas()
    {
        return (alas * tinggi) / 2;
    }
}


class Persegi : BangunDatar
{
    private float sisi;

    public Persegi(float sisi)
    {
        this.sisi = sisi;
    }

    public override float HitungKeliling()
    {
        return sisi * 4;
    }

    public override float HitungLuas()
    {
        return sisi * 2;
    }
}

Setelah itu, tinggal kita inisialisasi seperti biasa


        SegitigaSikuSiku sg = new SegitigaSikuSiku(6, 8);
        Debug.Log("Luas segitiga = " + sg.HitungLuas());
        Debug.Log("Keliling segitiga = " + sg.HitungKeliling());

        Persegi pg = new Persegi(5);
        Debug.Log("Luas persegi = " + pg.HitungLuas());
        Debug.Log("Keliling segitiga = " + pg.HitungKeliling());


Materi Terkait