IMHO inheritance is often overused by people new to OO design. In this sort of situation delegation is often better.
I would have a separate PaymentPolicy class that the Project class can have as an attribute. This would then be subclassed into FixedPricePolicy and PayAsYouGoPolicy (and maybe others in the future). This class heirarchy would handle anything to do with payment....



