Internal

address ownerAddress; // default internal

Public

compiler automatically generates getter functions for them.When used within the same contract, the external access (e.g. this.x) invokes the getter while internal access (e.g. x) gets the variable value directly from storage

Private

internal variables not visible in derived contracts