Study
Solidity

Inheritance & Interface di Solidity

Penjelasan

Contract di Solidity bisa mewarisi contract lain dengan keyword `is` (`contract Anak is Induk`), dan function yang ingin diubah perilakunya harus ditandai `virtual` di contract induk dan `override` di contract turunan. Interface (`interface NamaInterface { ... }`) mendefinisikan KONTRAK function tanpa implementasi — dipakai supaya kontrak yang BERBEDA (bahkan ditulis developer berbeda) bisa saling berinteraksi selama mengikuti standar interface yang sama (mis. standar ERC-20 untuk token).

Contoh Konsep

contract Hewan {
    function bersuara() public pure virtual returns (string memory) {
        return "...";
    }
}

contract Kucing is Hewan {
    function bersuara() public pure override returns (string memory) {
        return "Meong";
    }
}

interface IERC20 {
    function transfer(address ke, uint256 jumlah) external returns (bool);
    function balanceOf(address akun) external view returns (uint256);
}

Praktikum

Buat contract Kendaraan dengan function virtual infoKendaraan(), lalu contract Mobil yang is Kendaraan dan override function tersebut dengan teks berbeda.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Standar seperti ERC-20 (token) dan ERC-721 (NFT) pada dasarnya cuma interface yang disepakati komunitas — kontrakmu "kompatibel" dengan wallet/exchange mana pun kalau mengimplementasikan seluruh function yang didefinisikan interface standarnya.