Here both the constraint has same name. so Constraint will be overridden and constraint solver try to satisfy constraint which you have written in Extended class.
I agree both are different constraint names. This was done intentionally.
I assume it wont be able to resolve both constraints because the weightages in the distribution are different so would not make any sense to say solver will resolve both.
When you call randomize() on an object of an Ext_A class, both dist constraints are in effect because you did not override the constraint in the BASA_A class. It will behave as if you had two dist constraints in the same class on the same variable. In that case it will only satisfy the range membership properties of the dist constraints, and weights will be ignored.
In your particular example, the dist constraint just happens to specify the same complete value range of a 4-bit random variable on both Var1_c and Var1_new_c dist constraints, and the dist constraint in BASE_A just happens to be a uniform distribution, which gives you the same results as if you had no constraints.
Does that mean, if in the base class the weights were not equal then when I randomize multiple times I am not guaranteed of the hitting the expected behavior in the extended class, i.e weights of 5, 20, 5.
Yes. You need to either override the constraint or turn the base constraint off with constraint_mode() for the dist constraint in the EXT_A class to be satisfied.