1. 类的基本操作
1.1. 类的定义
类或者类型,就是对客观的一类事物的抽象。用一个class关键字来描述,在这个类中可以拥有这一类事物的属性,行为等等。
或者说就是用计算机的语言来描述的一类事物,就是类,在java,scala中都是用关键字class来标识。
因为类是对一类事物的抽象,所以不具备具体的行为执行能力,要想完成具体的操作,就需要使用该类的实例或者对象。
//创建scala中的一个类
object _01ClassOps {
def main(args: Array[String]): Unit = {
/*
scala中类对应对象的构建,和java一模一样 使用关键字new,
以及构造函数来完成实例的创建
scala可以使用默认的无参构造器完成实例创建,
同时一类如果有无参构造器,在创建对象的时候,可以省略掉()
*/
val p = new Person()
// val p1 = new Person
// p.name =
p.setName("刘嘉豪")
p.setAge(169)
p.show()
}
}
class Person {
/*
_的作用就相当于java中private String name;
如果要使用_,前面的成员变量就应该指定数据类型
*/
private var name:String = _
private var age = 13
def show(): Unit = {
println(s"name=${name}\tage=${age}")
}
def setName(name:String):Unit = {
//成员变量和局部变量命名冲突之后使用this关键字来进行区分
this.name = name
}
def getName() = this.name
//单行函数
// def setAge(age:Int) = this.age = age
def setAge(age:Int): Unit = {
if(age < 0 || age > 150) {
throw new RuntimeException("地球不欢迎你~")
}
this.age = age
}
def getAge = this.age
}
1.1.1. getter/setter操作
在scala中使用@BeanProperty注解来给成员变量提供getter/setter,该注解和private访问权限修饰符不可共存.
这种方式定义类似java bean的操作,在scala中几乎不用,java bean的主要作用是啥:
说白了就是在各个业务线/层之间传递数据,scala提供了另外的一种结果来模拟java中的bean–case class(样例类,样本类)
class Student {
@BeanProperty var name:String = _
private var age = 13
}