scala - 面试总结

object和class的区别?

object是类的单例对象,开发人员无需用new关键字实例化。如果对象的名称和类名相同,这个对象就是伴生对象

伴生对象是什么?

伴生对象就是与类同名的对象,它和同名类必须存在于同一个源文件中,并且可以相互访问私有特性。

apply与unapply方法的区别

apply方法经常用在伴生对象中,用于从给定的参数创建一个对象。unapply方法刚好相反,它从对象中提取出构造该对象的参数。

scala样例类的优点

object Demo extends App {
  //======================样例类===========================
  //1、样例类实现了apply方法,不需要使用new关键字就能创建该类对象
  val p = People("yk",22)

  //2、样例类实现了unapply方法,可以通过模式匹配来获取类属性
  p match {case People(x,y) => println(x,y)}
  //========================================================
}

case class People(name:String,age:Int)

访问修饰符

scala访问修饰符有三个:private、protected、public

访问修饰符 访问控制
私有成员 私有成员所在类或者对象的内部可见
保护成员 保护成员所在类的子类可见
公共成员 任何地方都可以被访问

trait(特质)和abstract class(抽象类)的区别?

一个类只能集成一个抽象类,但是可以通过with关键字继承多个特质;
抽象类有带参数的构造函数,特质不行(如 trait t(i:Int){} ,这种声明是错误的)

闭包

你可能感兴趣的:(scala - 面试总结)