scala伴生类及对象的问题

Scala代码如下

package com.langgemap.trackcloud.entry

//伴生类
class MyArray {
  private var name: String = "This is class"
  println(MyArray.name)
}
//伴生对象
object MyArray {
  private var name: String = "This is object"
  println(new MyArray().name)

  def apply(nums: Int*): Array[Int] = {
    val arr = new Array[Int](nums.length)
    for (i <- 0 to nums.length - 1) arr(i) = nums(i)
    arr
  }
}

object ObjectDemo_03 {
  def main(args: Array[String]): Unit = {
    //类比数组的创建方式
    var arr = Array(1, 2, 3) //通过伴生对象和有参的apply方法创建对象
    var arr2 = new Array[Int](5) //通过伴生类创建对象

    var arr3 = MyArray(1, 2, 3)
    println("------")
    var arr4 = new MyArray()
  }
}

想问下整个main函数开始的执行流程,没有明白为何这样输出

This is object
This is class
------
This is object

以及为何将var arr3注释掉后,就输出

------
This is object
This is class
This is object