SV--OOP

a:类、属性、方法、句柄、对象的概念。申明和例化的概念、例化的传参。

              . this 浅复制、深复制。

              对象的空间释放:重new或赋值null。

              静态属性和方法。

              extern、public/local/protected

b:虚函数,cast,虚类,参数化类,约束重写。

      

1: 类是一个模板,其内部定义了属性和方法。对象是类的例化和实现。

       句柄是指向对象的指针,即该对象的入口地址。

       可以在module/program/package内部或者外部定义一个类。类可以在module、program、class、function、task等地方申明。

       构造函数new时,才会给对象分配内存空间,并将入口地址赋给对象的句柄。申明时,句柄为null。

       sv支持类的单个例化或者以数组形式例化。

       每个class都需要显示的构造。

       一个类可以在其定义中引用自身。

       this被用来明确的引用当前类的属性或方法,对应着一个预定义的对象的句柄,在该对象中使用,并可访问内部成员。只能在非静态函数中使用。

       函数申明:local只该类可见、protected该类和之类可见。 限定符::。

       p2 = new p1;为浅复制,即其中包含的对象只复制句柄。

       静态属性:所有对象共用一个变量。

       静态方法:对于类的对象都是可以访问的,就像常规方法一样。可以在类的外部调用,即使没有该类的例化。静态方法不能申明为virtual。静态方法不能访问非静态成员(类的属性和方法),但可以直接访问类的静态属性或者调用同一个类中的静态方法。内部也不能用this操作符。

 

2:如果一个方法被子类重写,则必须保持与基类一致的参数。

       子类的数据与方法存在独立的空间中。

       子类对象是父类对象的有效表示,可以直接给父类赋值。Pkg=extpkg。

       $Cast(extpkt, pkt)。父类尝试给子类赋值。合法则赋值,否则告警。

       默认下(非虚函数),子类中重写的方法对父类是不可见的。

       一旦被申明为虚方法,则在之后的继承中就永远是虚方法。

       带有虚方法的类为多态类;虚方法的实现和重写的实现就是虚方法。

       如果子类中的约束和父类有一样的名字,则会重写基类的约束。

       Soft软约束。

posted on 2020-01-20 15:28  superany  阅读(306)  评论(0编辑  收藏  举报

导航