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...