Scala进阶_类和对象

怎甘沉沦 提交于 2020-02-16 14:22:42

类和对象

scala是支持面向对象的,也有类和对象的概念。我们依然可以基于scala语言来开发面向对象的应用程序。




创建类和对象

用法

  • 使用class来定义一个类
  • 使用new来创建对象

示例

创建一个Person类,并创建它的对象

步骤

  1. 创建一个scala项目,并创建一个Object
  2. 添加main方法
  3. 创建类和对象

实现

  1. 在IDEA中创建项目,并创建一个Object(main方法必须放在Object中)
  2. 添加main方法
  3. 创建一个Person类
  4. 在main方法中创建Person类对象

参考代码

object _01ClassDemo {
  // 创建类
  class Person{}

  def main(args: Array[String]): Unit = {
    // 创建对象
    val p = new Person()
    println(p)
  }
}



简写方式

用法

  • 如果类是空的,没有任何成员,可以省略{}

  • 如果构造器的参数为空,可以省略()

示例

使用简写方法重新创建Person类和对象

参考代码

object _02ClassDemo {

  // 创建类,省略花括号
  class Person

  def main(args: Array[String]): Unit = {
    // 创建对象,省略括号
    val person = new Person
  }
}




# 定义和访问成员变量

一个类会有自己的属性,例如:人这样一个类,有自己的姓名和年龄。我们接下来学习在类中定义、和访问成员变量。




用法

  • 在类中使用var/val来定义成员变量
  • 对象直接使用成员变量名称来访问成员变量


示例

  1. 定义一个Person类,包含一个姓名和年龄字段
  2. 创建一个名为"张三"、年龄为20岁的对象
  3. 打印对象的名字和年龄

步骤

  1. 创建一个Object,添加main方法
  2. 创建Person类,添加姓名字段和年龄字段,并对字段进行初始化,让scala自动进行类型推断
  3. 在main方法中创建Person类对象,设置成员变量为"张三"、20
  4. 打印对象的名字和年龄

参考代码

object _03ClassDemo {
  class Person {
    // 定义成员变量
    var name = ""
    var age = 0
  }

  def main(args: Array[String]): Unit = {
    // 创建Person对象
    val person = new Person
    person.name = "zhangsan"
    person.age = 20

    // 获取变量值
    println(person.name)
    println(person.age)
  }
}


# 使用下划线初始化成员变量

scala中有一个更简洁的初始化成员变量的方式,可以让代码看起来更加简洁。




用法

  • 在定义var类型的成员变量时,可以使用_来初始化成员变量
    • String => null
    • Int => 0
    • Boolean => false
    • Double => 0.0
  • val类型的成员变量,必须要自己手动初始化


示例

  1. 定义一个Person类,包含一个姓名和年龄字段
  2. 创建一个名为"张三"、年龄为20岁的对象
  3. 打印对象的名字和年龄

步骤

  1. 创建一个Object,添加main方法
  2. 创建Person类,添加姓名字段和年龄字段,指定数据类型,使用下划线初始化
  3. 在main方法中创建Person类对象,设置成员变量为"张三"、20
  4. 打印对象的名字和年龄

参考代码

object _04ClassDemo {

  class Person{
    // 使用下划线进行初始化
    var name:String = _
    var age:Int = _
  }

  def main(args: Array[String]): Unit = {
    val person = new Person
    
    println(person.name)
    println(person.age)
  }
}


定义成员方法

类可以有自己的行为,scala中也可以通过定义成员方法来定义类的行为。




定义

在scala的类中,也是使用def来定义成员方法



示例

  1. 创建一个Customer类

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9wHcgwsc-1581824744981)(assets/1557322180244.png)]

  2. 创建一个该类的对象,并调用printHello方法

步骤

  1. 创建一个Object,添加main方法
  2. 创建Customer类,添加成员变量、成员方法
  3. 在main方法中创建Customer类对象,设置成员变量值(张三、男)
  4. 调用成员方法

参考代码

object _05ClassDemo {

  class Customer {
    var name:String = _
    var sex:String = _

    // 定义成员方法
    def sayHi(msg:String) = {
      println(msg)
    }
  }

  def main(args: Array[String]): Unit = {
    val customer = new Customer
    customer.name = "张三"
    customer.sex = "男"
    customer.sayHi("你好")
  }
}


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!