Scala 中的 类与半生对象

14 阅读2分钟

对象

1. 什么是面向对象?

它是一种编程思想,它是基于面向对象的,强调的是以对象为基础完成各种操作。

2. 面向对象的三大思想特点是什么?

(1) 更符合人们的思考习惯

(2) 把复杂的事情简单化

(3) 把程序员从执行者变成指挥者

3. 面向对象的三大特征是

(1) 封装

(2) 继承

(3) 多态

4. 什么是类class? 类是属性行为的集合。

(1) 属性也叫成员变量:名词,用来描述事物的外在特征

(2) 行为也叫成员方法:动词,表示事物能做什么

案例:

package Top10
object class1 {
  /*
* 伴生类 和 伴生对象
* 1. 类和对象的名字是一样的
* 2. 他们在同一个文件中
* 特定:可以访问对方的私有(private)属性
*/

  class Student() {
    // private 修饰的属性,在类的外部(在当前class之外)无法访问!
    private val name:String = "小花"
  }

  object Student {
    def sayHello(stu:Student):Unit={
      println(s"${stu.name}")
    }
  }

  def main(args: Array[String]): Unit = {
    val stu1 = new Student()
  //  stu1.name 是错误的,无法访问
  //  val stu1 = new Student()
  //  val stu2 = new Student()
  //  val stu3 = new Student()
  //  val stu4 = new Student()
   Student.sayHello(stu1)
  }
}

什么是单例模式?

就是通过技术手段,让某个类只能有一个对象实例。这样做的好处就节约资源,能更加精准地管理。

package Top10
object class11 {

// 1.让构造函数变成私有的。在外部,就能通过new来创造对象了
  class Student() {
    // private 修饰的属性,在类的外部(在当前class之外)无法访问!
    private val name:String = "小花"
  }

  object Student {
    val instance = new Student() // 伴生对象中,可以访问伴生类的私有成员
    def getInstance:Student = {
      instance
    }
  }

  def main(args: Array[String]): Unit = {
    val stu1 = Student.getInstance
    val stu2 = Student.getInstance
    println(stu1 == stu2) // true
  }
}