创建对象
- 基本语法 ```scala val | var 对象名 [:类型] = new 类型()
**2.案例实操**<br />(1)val修饰对象,不能改变对象的引用(即:内存地址),可以改变对象属性的值<br />(2)var修饰对象,可以修改对象的引用和修改对象的属性值<br />(3)自动推导变量类型不能多态,所以多态需要显示声明```scalaclass Person {var name: String = "canglaoshi"}object Person {def main(args: Array[String]): Unit = {//val修饰对象,不能改变对象的引用(即:内存地址),可以改变对象属性的值val person = new Person()person.name = "bobo"person = new Person() //报错println(person.name)}}
构造器(主构造和辅助构造)
和Java一样,Scala构造对象也需要调用构造方法,并且可以有任意多个构造方法。
Scala类的构造器包括:主构造器和辅助构造器
主构造器 
class Student(var name : String, val number : String) {println("主构造器!")}
主构造器的参数 会编译成字段 参数声明 不加val或者var 相当于private 从构造器定义在类内部,方法名为this
从构造器必须先调用已经存在的构造器
继承而来的字段不需要加var或者val
class UniversityStudent(name : String, number : String, val major : String) extends Student(name, number) {......}
重写父类的字段或方法 加 override 关键字
class 类名 (形参列表) { //主构造器//类体// 辅助构造器 必须用thisdef this(形参列表) { //辅助构造器}def this(形参列表) { //辅助构造器可以有多个...}}
说明
(1)辅助构造器,函数的名称this,可以有多个,编译器通过参数的个数及类型来区分。
(2)辅助构造方法不能直接构建对象,必须直接或者间接调用主构造方法。
(3)构造器调用其他另外的构造器,要求被调用构造器必须提前声明。
(4) 辅助构造函数的第一个语句必须为对主构造函数的调用
案例实操
(1)如果主构造器无参数,小括号可省略,构建对象时调用的构造方法的小括号也可以省略。
class Person {var name: String = _var age: Int = _def this(age: Int) {this()this.age = ageprintln("辅助构造器")}def this(age: Int, name: String) {this(age)this.name = name}println("主构造器")}object Person {def main(args: Array[String]): Unit = {val person2 = new Person(18)}}输出主构造器辅助构造器
构造器参数
1.说明
Scala类的主构造器函数的形参包括三种类型:未用任何修饰、var修饰、val修饰
(1)未用任何修饰符修饰,这个参数就是一个局部变量
(2)var修饰参数,作为类的成员属性使用,可以修改
(3)val修饰参数,作为类只读属性使用,不能修改
对于case class的参数而言,主构造器的参数默认就是val类型的变量
2.案例实操
class Person(name: String, var age: Int, val sex: String) {}object Test {def main(args: Array[String]): Unit = {var person = new Person("bobo", 18, "男")//未用任何修饰符修饰,这个参数就是一个局部变量printf(person.name)//var修饰参数,作为类的成员属性使用,可以修改person.age = 19println(person.age)//val修饰参数,作为类的只读属性使用,不能修改person.sex = "女"println(person.sex)}}
