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.
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.