Scala>scala类和对象

类和对象

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


创建类和对象

用法
使用class来定义一个类 new来创建对象
参考代码

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

参考代码
1 如果类是空的,没有任何成员,可以省略{}
2 如果构造器的参数为空,可以省略 ()

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

定义和访问成员变量

一个类会有自己的属性,例如:人这样一个类,有自己的姓名和年龄。在类中定义、和访问成员变量
参考代码
1 在类中使用 var/val 来定义成员变量
2 对象直接使用成员变量名称来访问成员变量

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类型的成员变量,必须要自己手动初始化

参考代码

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中也可以通过定义成员方法来定义类的行为。

  • 使用def来定义成员方法

示例
1.创建一个Customer类
在这里插入图片描述
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("你好")
}
}

访问修饰符

和Java一样,scala也可以通过访问修饰符,来控制成员变量和成员方法是否可以被访问。

  • 定义
    可以在成员前面添加private/protected关键字来控制成员的可见性。 scala中,没有public关键字,任何没有被标为private或protected的成员都是公共的
  • 案例
    定义一个Person类
    在这里插入图片描述
    在main方法中创建该类的对象,测试是否能够访问到私有成员

参考代码

object _02AccessDemo {
​
 class Person {
   // 定义私有成员变量
   private var name:String = _
   private var age:Int = _
​
   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
  }
}
​
 def main(args: Array[String]): Unit = {
   val person = new Person
   person.setName("张三")
   person.setAge(10)
​
   println(person.getName())
   println(person.getAge())
}
}
发布了166 篇原创文章 · 获赞 29 · 访问量 3523

猜你喜欢

转载自blog.csdn.net/qq_44509920/article/details/105346040
今日推荐