Scala学习笔记(二)
一、创建Scala工程
二、创建类和对象
scala是支持面向对象的,也有类和对象的概念。我们依然可以基于scala语言来开发面向对象的应用程序。
- 语法格式
- 使用
class
来定义一个类- 使用
new
来创建对象
-
示例
创建一个Person类,并创建它的对象
- 创建一个scala项目,并创建一个Object
- 添加main方法
- 创建类和对象
// 创建一个Person类 class Person{ } // 在IDEA中创建项目,并创建一个Object(main方法必须放在Object中) object ScalaDemo01 { // 添加main方法 def main(args: Array[String]): Unit = { // 在main方法中创建Person类对象 val p = new Person() println(p) } }
三、定义和访问成员变量
像Java一样,每一个类会有自己的属性,例如:Person这样一个类,有自己的姓名和年龄。
-
语法格式
- 在类中使用
var/val
来定义成员变量 - 对象直接使用成员变量名称来访问成员变量
- 在类中使用
-
示例
- 定义一个Person类,包含一个姓名和年龄字段
- 创建一个名为"张三"、年龄为20岁的对象
- 打印对象的名字和年龄
-
参考代码
// 创建Person类,添加姓名字段和年龄字段,并对字段进行初始化,让scala自动进行类型推断 class Person { // 定义成员变量 var name = "" var age = 0 } // 创建一个Object,添加main方法 object ScalaDemo02 { // 在main方法中创建Person类对象,设置成员变量为"aiden"、23 def main(args: Array[String]): Unit = { // 创建Person对象 val person = new Person person.name = "aiden" person.age = 23 // 获取变量值 println(person.name) println(person.age) } }
tips:
- 定义变量
var
,自动拥有setter和getter方法- 定义常量
val
,相当于java中的final修饰的变量,只有getter方法
四、使用下划线初始化成员变量
scala中有一个更简洁的初始化成员变量的方式,可以让代码看起来更加简洁。
-
语法格式
- 在定义
var
类型的成员变量时,可以使用_
来初始化成员变量- String => null
- Int => 0
- Boolean => false
- Double => 0.0
- …
val
类型的成员变量,必须要自己手动初始化
- 在定义
-
示例
- 定义一个Person类,包含一个姓名和年龄字段
- 创建一个名为"aiden"、年龄为23岁的对象
- 打印对象的名字和年龄
// 创建Person类,添加姓名字段和年龄字段,指定数据类型,使用下划线初始化 class Person{ // 使用下划线进行初始化 var name:String = _ var age:Int = _ } // 创建一个Object,添加main方法 object ScalaDemo03{ //在main方法中创建Person类对象 def main(args: Array[String]): Unit = { val person = new Person // 设置成员变量为"aiden"、23 person.name = "aiden" person.age = 23 //打印对象的名字和年龄 println(person.name) println(person.age) } }
五、定义成员方法
在scala的类中,也是使用def
来定义成员方法
-
示例
- 创建一个Person类
- 创建一个该类的对象,并调用sayHello方法
// 创建Person类,定义成员方法 class Person { def sayHello = println("hello") } // 创建一个Object,添加main方法 object ScalaDemo04 { def main(args: Array[String]): Unit = { val person = new Person person.sayHello } }
六、访问修饰符
Java中的访问控制,同样适用于scala,可以在成员前面添加private/protected关键字来控制成员的可见性。但在scala中,没有public关键字,任何没有被标为private或protected的成员都是公共的
-
示例
- 创建一个Object,添加main方法
- 创建Person类,定义私有成员变量和成员方法,并设置getter、setter方法
- 在main方法中创建该类的对象
- 设置变量的值,并打印
// 创建Person类,定义私有成员变量和成员方法 class Person { // 定义私有成员变量 private var name:String = _ private var age:Int = _ //设置getter、setter方法 def getName() = name def setName(name:String) = this.name = name def getAge() = age def setAge(age:Int) = this.age = age // 定义私有成员方法 private def getNameAndAge = { name -> age } } // 创建一个Object,添加main方法 object ScalaDemo05 { // 在main方法中创建该类的对象 def main(args: Array[String]): Unit = { val person = new Person