Java is based on OOPS concepts and abstraction is one of its feature. So by using interfaces in Java, we achieve abstraction. Like a class, an interface can have methods and variables, but the methods declared in an interface are by default abstract (method signature without body).
Scala has lots of features and one of the features always confused me called “pass-by-name” argument. For me pass by name is same as “higher-order-function” but different from just syntax otherwise everything is same. While googling out for their difference, I found: Pass-by-name is lazy evaluation but higher-order-functions are eager. Pass-by-name is used for constructs custom controls. and maybe there are more, but these two are available everywhere. Continue Reading