Scala面向对象—类详解
package com.zzy import scala.beans.BeanProperty class Aclass { @BeanProperty//生成get和set方法对于其他框架里对标准的scalaBean的使用有重要作用 var name="" private var age=0//屏蔽一些不合法的操作,提高程序的健壮性 def getAge()=age def setAge(age:Int):Unit={ if (age>=0){ this.age=age }else{ this.age=18 } } def show():Unit={ println("我是show方法") } def show2: Unit ={//方法无副作用可以不加括号 println("我是show2方法") } //定制getter和setter-----按照java的方式写 /*def getName():String=name def setName(name:String){this.name=name}*/ }
package com.zzy import org.junit.Test class Person (ad:String){//主构造器!!! var address=ad var name="小白" var age=18 //主构造器 //无参构造器 /*def Person(ad:String):Unit={ println("主构造器被调用了") }*/ //scala中只能有一个主构造器 //辅助构造器 def this(n:String,a:Int){ this("河南")//调用主构造器 this.name=n this.age=a println("辅助构造器被调用了") } }
开发中正常一个类的结构
package com.zzy import scala.beans.BeanProperty class Address { //给出getter setter @BeanProperty var city="郑州" @BeanProperty var street="十五大街" @BeanProperty var mail="450000" //主构造器就是无参的构造方法 //辅助构造器 def this(c:String,s:String,m:String) { this() this.city = c this.street = s } //toString 重写了tostring override def toString = s"Address($city, $street, $mail)"
}
package com.zzy import org.junit.Test object MyTest { def main(args: Array[String]): Unit = { val aa = new Aclass aa.show() aa.name="赵云"//调用了setter println(aa.name)//调用了getter aa.show2 //属性上加上@BeanProperty 对象就直接可以调用属性的get和set方法 println(aa.getName) aa.setName("关羽") println(aa.getName) aa.setAge(-100) println(aa.getAge())//18 //创建对象 /*val person = new Person("郑州")//调用了有参数的主构造器 println(person.address+"\t"+person.name+"\t"+person.age)*/ /* val person2= new Person("曹操",50) println(person2.address+"\t"+person2.name+"\t"+person2.age)*/ //有两个构造器(主,辅)就有两种方式创建对象 /* val address = new Address println(address)*/ /* val address2 = new Address("洛阳","凤凰街道","460000") println(address2)*/ } //无法在object中使用junit @Test def myfunction():Unit={ println("测试") } }
Scala中junit的使用
package com.zzy import org.junit.Test class myJunitTest {//scala可以在class中使用junit object中不可以 @Test def show:Unit={ println("测试junit") } }