To be able to implement good contracts, the contract needs access to the targets member fields (this is at least true for in-house testing, however, to verify libraries that e.g. are used by clients you may only want to use the publicly available information about your components).
If you define a one-parameter constructor in your contract with the target class as parameter, you get access to the target and therefore to all its members according to the access level modifiers of the targets fields and methods. However, if you pass in the target reference to the ContractBase constructor, you will be able to get access to private fields in the target using the Object getTargetField(String fieldName) method, as shown in this Example.