Scala(6)----class与object关键字详解

class

类的定义

class Person(gender: String) {
  //辅构造函数
  def this() = this("woman")
  var name = ""

  override def toString(): String = s"$name 's gender = $gender"
}

类的定义中可以有多个构造参数。 Scala中只有一个主要构造函数,其他都是辅助构造函数。辅助构造函数必须调用主构造函数。
主构造函数需要传入性别,辅助构造函数默认将性别设置为woman
Scala(6)----class与object关键字详解_第1张图片

在Scala中,类并不用声明为public类型的。
Scala源文件中可以包含多个类,所有这些类都具有共有可见性。
class定义的类可以继承,继承后子类可以调用父类的非私有方法和属性
定义一个类,这个类可以定义但不能运行main方法
这个类只是一个抽象,不能直接调用,需要new一个实例出来
Scala(6)----class与object关键字详解_第2张图片

object

object的定义

object Person {
  val age = 12
  def eat(){println("吃东西")}
}

Scala单例对象是十分重要的,没有像在Java一样,有静态类、静态成员、静态方法,但是Scala提供了object对象,这个object对象类似于Java的静态类,它的成员、它的方法都默认是静态的。
Scala它使用单例对象。单例是一种只能有一个实例的对象。使用object关键字对象而不是类关键字创建单例。由于无法实例化单例对象,因此无法将参数传递给主构造函数。
Scala(6)----class与object关键字详解_第3张图片
object的main方法
在scala中,如果要运行一个应用程序,那么必须有一个main方法,作为入口
scala中main方法定义为def main(args: Array[String]), 并且必须定义在object中
Scala(6)----class与object关键字详解_第4张图片
还有第二种可以运行程序的方式 继承App类
Scala(6)----class与object关键字详解_第5张图片
也可以运行程序

伴生对象

提到class和object就不得不提伴生对象,当一个类和一个静态对象的名字一样的时候,可以说这个对象是这个类的伴生对象 ,这个类是这个对象的伴生类。
Scala(6)----class与object关键字详解_第6张图片

伴生类和伴生对象必须存放在一个.scala文件中
伴生类和伴生对象最大的特点在于,可以互相访问Private field
Scala(6)----class与object关键字详解_第7张图片

伴生对象特有的方法:apply。
可以通过伴生对象 更直接简单的创建实例
通常在伴生对象中实现apply方法,并在其中实现构造伴生类对象的功能;这样在创建伴生类对象时,可以使用Class()方式(而不仅仅是new Class方式),原理是隐式地调用了伴生对象的apply方法,让对象创建更加简洁。
Scala(6)----class与object关键字详解_第8张图片
应用
Scala(6)----class与object关键字详解_第9张图片

你可能感兴趣的:(学习小结)