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软约束。
原文:https://www.cnblogs.com/superany/p/12218193.html