It is often useful to define a generic class whose objects can be instantiated to have different array sizes or data types. This avoids writing similar code for each size or type and allows a single specification to be used for objects that are fundamentally different and (like a templated class in C++) not interchangeable.
It says that it is a generic class. So when i use same parameter value “static” variables are same across those two.
class abc #(int a=10);
static int b =a;
endclass
module mod();
abc #(50) a1;
abc #(50) a2;
initial
begin
a1.b =25;
$display("b=%0d, b=%0d, b=%0d",a1.b,a2.b,a1.b);
end
endmodule:mod