title: Kotlin: why do constructor parameters have "internal" visibility by default?
body: <p>If we have a class:</p>
  
  <pre><code>class Customer(val customerName: String) { }
  </code></pre>
  
  <p>Its contructor parameter <code>customerName</code> is accessible through <code>getCustomerName()</code> (because it's also a property). If we want to restrict access to this property we should declare it as <code>private</code>.</p>
  
  <p>Since in many cases from Java world (and if a class is not intended to be data class) fields which are assigned from constructor parameters are for private / protected use it feels like an additional effort to explicitely declare them <code>private</code> in Kotlin.</p>
  
  <p>Also, Kotlin classes are final by default, so why not follow this principle for properties? Am I missing something?</p>