类的封装继承多态以及virtual interface-SV

一、面向对象

1.1术语

  • class:包含属性+方法(function、task)的基本构件模块;
  • object:类的一个实例(对象),能够在内存中开放出一个空间进行操作,也就是类的例化;
  • handle:对象在内存中开辟了一段空间进行操作,handle是像一个把手一样,是能够打开这段空间的钥匙。Verilog如果要找到设计中的实例,是通过层次化的索引来找到的。而sv中通过handle就可以索引对象的方法和变量了。不像c语言中可能会有指向指针的指针,sv中handle只能指向class,这与c不一样的地方;
  • property:存储
  • 类里面不能由always和initial:硬件的世界开始就存在,软件是例化后动态存在。所以不能直接使用always和initial。

1.2 三大特性和五大原则

  • 封装:把抽象的数据和对数据进行的操作封装在一起;
  • 继承:让一个类获取另一个类型的属性的方式,分为实现继承和接口继承;
  • 多态:同一个行为具有多个不同的表现形式或者形态的能力,同一消息可以根据发送对象的不同而采用多种不同的行为方式,类似多个儿子都继承父亲的基因,但是不同儿子可能都有一个可变基因,会表现出不同的能力;

五大原则

  • 开闭原则:对扩展开放,对修改关闭;不修改源代码的情况下改变模块的行为&
  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
在C++中,的封装、继承和多态是面向对象编程的三个重要概念。 封装(Encapsulation)是指将数据和操作封装在一个中,通过访问修饰符(public、private、protected)来控制对成员的访问。封装可以隐藏的内部实现细节,提供公共接口供外部使用,并保护数据的安全性。 继承(Inheritance)是指一个可以从另一个派生出来,继承了父的属性和方法。派生可以添加新的属性和方法,也可以重写父的方法。通过继承,可以实现代码的重用和层次化设计。 多态(Polymorphism)是指同一操作作用于不同的对象上时,可以产生不同的行为。多态通过虚函数(virtual function)实现,允许子重写父的方法,并在运行时动态绑定。 下面是一个简单的示例代码: ```cpp // 封装 class Shape { public: void draw() { // 绘制形状 } private: int x; int y; }; // 继承 class Circle : public Shape { public: void draw() { // 绘制圆形 } }; // 多态 void drawShape(Shape* shape) { shape->draw(); } int main() { Shape shape; Circle circle; drawShape(&shape); // 调用基的draw方法 drawShape(&circle); // 调用派生的draw方法 return 0; } ``` 在上面的示例中,`Shape` 封装了绘制形状的操作,并通过 `draw` 方法对外提供了公共接口。`Circle` 继承自 `Shape` ,重写了 `draw` 方法以实现绘制圆形的操作。`drawShape` 函数接受一个 `Shape` 型的指针,并调用其 `draw` 方法。在运行时,根据实际对象的型确定调用的方法,实现了多态性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zer0hz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值