Features of Scala

    1. Object Oriented
      1. Everything is an object
      2. Unlike java, where we have primitives/static fields and methods which are not members of any object

    Example: 1+2 is actually 1.+(2)

    1. Functional
      1. Functions are first-class values or citizens.
      2. Encourages immutability where operations like map(), input values to output, rather than change data in place
    2. Compatibility
      1. Compile to JVM bytecode
      2. Can call java methods and fields
      3. Re-uses Java types
    3. Concise
    class Time(val hours: Int, val inutes: Int)
    public class Time {
    private final int hours;
    private final int minutes;
    public Time(int hours, int minutes) {
      this.hours = hours;
      this.minutes = minutes;
    public int getHours(){
      return hours; 
    public int getMinutes() {
       return minutes;