class AAA;
rand int a;
rand bit b;
constraint aaa;
class BBB extends AAA ;
constraint aaa {a>4 && a<67 ; b>10 && b<90 ;}
endclass
endclass
module mode;
AAA p;
AAA::BBB q;
initial begin
p=new;
q=new;
repeat(10)
begin
assert(p.randomize());
$display("%0d , %0d",q.a,q.b);
end
end
endmodule
您正在将继承(IS-A)与容器(HAS-A)和嵌套声明混合在一起。使用继承,您只需构造扩展类。如果构造基类,则该对象不知道对其的任何扩展,包括带有嵌套类声明的类。
除非您需要从通用名称空间中隐藏嵌套类类型的名称,否则没有理由使用嵌套类。否则,嵌套类的行为与未声明嵌套的情况下相同。