問題一覧に戻る
中級継承
問題51: 抽象コントラクト
Solidityの抽象コントラクトを学習します - 直接デプロイできないテンプレートです。抽象コントラクトはvirtualでマークされた少なくとも1つの未実装関数を含みます。完全な実装を提供せずにコントラクトの構造とインターフェースを定義します。このパターンは派生コントラクトが特定の機能を実装することを強制します。抽象コントラクトはベースコントラクトの作成、共通インターフェースの定義、複数のコントラクト間での一貫した実装の保証に重要です。DeFiでトークン標準とプロトコルテンプレートの作成に不可欠です。抽象コントラクトの理解は拡張可能なコントラクトアーキテクチャの構築を可能にします。
pragma solidity ^0.8.0;
// 抽象コントラクトの定義
contract Shape {
// 実装されていない関数
function area() public pure virtual returns (uint256);
}
contract Square is Shape {
uint256 public side = 10;
// 抽象関数を実装
function area() public pure returns (uint256) {
return 100;
}
}