In Java there are fields but in Kotlin there are no fields like Java. Whatever variables we define in Kotlin class it becomes properties by default with internal implementations of it’s accessors.
![](http://findnerd.s3.amazonaws.com/imagedata/8712/8712.jpg)
let's try to understand this feature feature by a simple example:
Fields and Properties in Java
We simply specify a Java class which has two variable fields and they are private to the class. To access these variable values, first you have to make them class property by defining getter and setter method in this class. Now, the fields describe the class and can be accessed via it’s accessors( getter and setter).
So, in Java to convert a field to a property you have to specify the getter and setter method.
public class Employee {
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
In Kotlin
When we define any variables in Kotlin, we do not need to define getter and setter method manually because It has default internal implementation of assessors (getter and setter) method.
class Employee {
var name = "findnerd" // getter and setter is created
var id = 1 // getter and setter is created
}
Example:
In above Employee class, when name is initialized with i.e “findnerd”, using = operator, internally set(value) method is called and whenever this property is accessed the get() is invoked internally. And the same happens for id as well.
fun main(args:Array<String>){
var emp = Employee()
println(emp.name) // internally get() is called
emp.name = "arvind" // internally set(value) is called
println(emp.name)
println(emp.id)
emp.id = 2 // internally set(value) is called
}
In the above code you don't have to write set() and get(), you can directly call emp.name instead of doing emp.getName() and emp.setName("arvind") in Kotlin. Things becomes much easiter to code in Kotlin.
0 Comment(s)