scala中的类和对象(1)

31 阅读2分钟

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

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

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

[举例]:学生有姓名和年龄这些是属性,学生要学习,要吃饭这些是行为。

创建类和对象

1. 使用IDEA创建一个scala项目,并创建object类。

2. 设置项目名,包名,项目地址。注意不要使用中文,空格,特殊符号作为名字及路径名。

3.this在类内部表示当前对象,我们可以利用这个特点实现对象方法的链式调用

4.辅助构造函数的作用是支持更多的创建对象的方式。

代码演示:

class Student(var name:String,var age:Int) {
  println("构造函数被调用")

  def sayHi():Unit = {
    println(s"我是${name},我今年${age}岁")
  }
  // 辅助构造函数
  // (1)它的名字就是this
  // (2) 它内部的第一句代码就必须是调用 主构造函数 this("无名氏",0)
  def this() = {
    this("无名氏",0)
    println("辅助构造函数1被调用...")
  }

  def this(name:String) = {
    this(name,0)
    println("辅助构造函数2被调用")
  }
}

object practice33 {
  def main(args: Array[String]): Unit = {
    // 创建一个学生对象
    // val stu1 = new Student("小花",18)
    // 调用对象的方法
    // stu1.sayHi()

    // stu1.age = 19
    // 调用对象的方法
    // stu1.sayHi()

    // 这里没有设置参数,它会调用辅助构造函数
    //    val stu2 = new.Student()
    //    stu2.sayHi()

    // 这里设置了一个参数,它会调用辅助构造函数
    val stu3 = new Student("小明")
    stu3.sayHi()

  }
}

class也可以放在object里面使用,song()方法只能在class类里面才能使用

object practice34 {
  class Student(var name:String,var age:Int) {
    private def song(): Unit = {
      println("我在唱歌....")
    }

    def sayHi(): Unit = {
      println(s"我是${name},我今年${age}")

      song()
    }
  }
  def main(args: Array[String]): Unit = {
    val stu3 = new Student("小明",18)
    stu3.sayHi()

  }
}

用 object 关键字来创建一个单例对象。单例对象在整个应用程序中只有一个实例,适合用于存放工具方法、常量或共享状态。

1. 通过object关键字创建的是一个对象,不是一个类型。

2. 不能使用new关键字:声明单例对象的时候不可以使用new关键字。

3. 不能传递参数:单例对象无法传递参数。

object Tools {
  val PI = 3.14

  def double(n:Int):Int= {
    n*2
  }
}

object practice35 {
  def main(args: Array[String]): Unit = {

    val rst = Tools.PI * Tools.double(2) // 12.56

    println(s"rst = ${rst}")

  }
}