Why use properties?
Properties are nothing more than syntactic sugar that allows your source code to call a method using a simplified syntax. Kotlin comes with support for simple properties and delegated properties  (we will see later in the chapter what they are).
How many times have you written a class containing state information, a state that can be either retrieved or changed? Usually, state information comes in the form of fields. Here is a typical class defining two fields:
    class Student { 
      private val name:String; 
      private val age:Int; 
    } 
Writing such a class in Java is quite repetitive (luckily IntelliJ is quite powerful when it comes to code generation and refactoring). You normally provide two methods for each field: a getter and a setter. The code will look similar to this:
    public class Student { 
      private String name; 
      private intage; 
      public Student(String name, intage){ 
        this.name= name...