Rust的面向对象特性

本文探讨了Rust语言如何实现面向对象特性,与C++进行比较。Rust通过结构体和枚举以及impl块实现数据和行为的结合,满足封装需求。尽管不支持传统的继承,但Rust利用trait对象实现了代码复用和类型系统扩展。这种设计遵循‘组合优于继承’的原则,降低了耦合度。
摘要由CSDN通过智能技术生成

Rust的面向对象特性

与典型的面向对象语言C++比较

OOP一般包含以下3大特性:

  1. 对象包含数据和行为
  2. 封装隐藏实现细节
  3. 继承作为类型系统和代码共享

Rust对对象的支持

对比:C++ 通过class关键字实现数据与行为的打包

Rust 是面向对象的:结构体和枚举包含数据而 impl 块提供了在结构体和枚举之上的方法。虽然带有方法的结构体和枚举并不被 称为对象,但是他们提供了与对象相同的功能

Rust对封装的支持

对比:C++通过public,private,protected等关键字实现封装

Rust 满足封装要求:在代码中不同 的部分使用 pub 与否可以封装其实现细节。

Rust对继承的支持

对比:C++通过 : 语法直接支持面向对象继承机制

使用继承的原因一般有两个:

  1. 通过继承父类实现对子类对父类代码的复用
  2. 通过继承,实现类型系统(即父子类视为统一类型而达到多态的效果)

Rust通过trait对象实现上述两项功能。

总结

《设计模式》中明确提到过“组合优于继承”,Rust作为一门全新的语言,抛弃以继承的方式来实现面向对象的功能,因为继承使得父子类之间产生的极大耦合。

从Rust设计上看,面向对象模式并不总是利用 Rust 优势的最好方式,但也是可用的选项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>