В чем отличие параметров класса class A(val a:String) и B(b:String)?

Это обе неизменяемые ссылочные переменные, которые хранят ссылку на объект типа String? Отличия какие у них?

Почему при создании объекта класса я не могу вызвать переменную b?

val a=A

println

val b=B

println