rust 抽象用法的实现

本文探讨了Rust中抽象类的实现,包括如何在mod.rs中定义抽象类,以及在yileina.rs和saya.rs中进行具体实现。主函数main.rs展示了如何调用这些实现,包括对未实现方法的默认处理和已实现方法的重写效果。
摘要由CSDN通过智能技术生成
目录结构

在这里插入图片描述

mod.rs 抽象类

建议把抽象的类放在 mod.rs文件下,个人觉得这样用比较爽。

当然也可以按自己的喜好,放其他地方。

注意抽象写法上的不同,一个是; 一个是{}

pub mod yileina;
pub mod saya;

pub trait Abstract {
    //名字
    fn name()->String;  //这种写法,实现的类,必须对该方法进行实现
    //价格
    //这种写法,实现的类,可以不进行实现。 如果进行实现,就是进行了方法重写。
    // (本质上是函数方法,看起来像接口而已)
    fn price()->String{
        println!("$500");
        "$500".to_string()
    }
    //尺寸
    fn size()->String{
        println!("666");
        "666".to_string()
    }

}
yileina.rs 具体实现类

对抽象的具体实现

必须实现 ; 结尾 (name) 的方法,可以选择实现{} 的方法

use crate::bridge::Abstract;

pub struct Yileina {}


impl Abstract for Yileina {

    fn name() -> String {
        let mut str = "伊蕾娜!".to_string();
        println!("{}",str);
        str
    }

    fn price()->String{ //相当于重写
        let mut str = "$110".to_string();
        println!("{}",str);
        str
    }
}
saya.rs 具体实现类

对抽象的具体实现

use crate::bridge::Abstract;

pub struct Saya {}


impl Abstract for Saya {

    fn name() -> String {
        let mut str = "沙耶!".to_string();
        println!("{}",str);
        str
    }

    fn price()->String{ //相当于重写
        let mut str = "$120!".to_string();
        println!("{}",str);
        str
    }

    fn size()->String{ //相当于重写
        let mut str = "158".to_string();
        println!("{}",str);
        str
    }
}
main.rs 主函数

调用没有实现的方法,会得到默认的返回值。

调用已经实现的方法,会返回重新实现的返回值。(相当于进行了代码重写)

mod bridge;
use crate::bridge::yileina::Yileina;
use crate::bridge::Abstract;
use crate::bridge::saya::Saya;


fn main() {
    Yileina::name();
    Yileina::price();
    Yileina::size();	

    Saya::name();
    Saya::price();
    Saya::size();
}
运行结果
伊蕾娜!
$110
666
沙耶!
$120!
158
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值