solidity(4)

275 阅读1分钟

接口,继承,抽象类


pragma solidity ^0.4.24;

interface Wifi{  // 定义接口,函数只有声明,没有实现

     function wifi() public returns(string);
}

interface BlueTooth{
    function blue() public returns(string);
}

// solidity中,没有abstract,拥有抽象函数的合约就是抽象合约(不能够实例化)
contract Phone{
    
    // 抽象合约是不能够实力化
    function start() internal returns (string){
        return "调用开机的功能";
    }
    
    // 实现手机关机的功能
    function close() internal returns (string){
        return "调用了关机的功能";
    }
    
    // 由于闹钟每个手机实现不相同,因此定义为抽象函数
    function alarm() internal returns (string);
}

// Mi手机,实现闹钟、Wifi功能
contract Mi is Phone,Wifi{ // 继承与实现都可以使用is
   
   function wifi() public returns(string){
       return "小米实现wifi功能";
   }
   
   function alarm() internal returns (string){
       return "小米实现闹钟功能";
   }
   
   function show() returns (string,string){
       return (wifi(),alarm());
   }
}

// Iphone手机,实现全部功能
contract Iphone is Phone,Wifi,BlueTooth{
    
    function wifi() public returns(string){
       return "Iphone实现wifi功能";
   }
   
   function alarm() internal returns (string){
       return "Iphone实现闹钟功能";
   }
   
   function blue() public returns(string){
       return "Iphone实现了蓝牙功能";
   }
   
   function show() returns (string,string){
       return (start(),close());
   }
    
}