自身类型
指定自身类型相当于继承(指定父类或特质),指定后即可使用自身类型的属性
_:自身类型 =>
object Test {
def main(args:Array[String]):Unit=
{
val user = new RegisterUser("alice","1234")
user.insert()
}
}
//类,用户
class User(val name:String,val password:String)
//特质
trait UserDo{
this:User => //指定特质的自身类型是类User(相当于继承类User)
def insert():Unit={
println(s"insert into db: ${this.name}") //可以直接使用User的属性,用this来表示调用自身类型的类
}
}
//子类,注册用户类
class RegisterUser(name:String,password:String) extends User(name,password) with UserDo
类型检查:对象名.isInstanceOf[类型]
类型转化:对象名.asInstanceOf[类型]
获取对象类名:classOf
object Test {
def main(args:Array[String]):Unit=
{
val user = new RegisterUser("alice",20)
//类型检查
val a = user.isInstanceOf[RegisterUser]
def bool():Unit={
if (a == true){
user.pri()
}else{
user.pri1()
}
}
bool()
println(s"user type is RegisterUser: $a")
//类型转化
println("=====")
val b = user.asInstanceOf[User]
println(s"user type is User: $b")
//查看类的类型
println("=====")
println(classOf[User])
}
}
//类,用户
class User(val name:String,val age:Int){
def pri():Unit={
println(s"user: ${name}")
}
}
//子类,注册用户类
class RegisterUser(name:String,age:Int) extends User(name,age){
override def pri():Unit={
println(s"rguser: ${name}")
}
def pri1():Unit={
println(s"${name} ${age}")
}
}
rguser: alice
user type is RegisterUser: true
=====
user type is User: RegisterUser@3fee733d
=====
class User
枚举类对象:object 类名 extends Enumeration
object Test {
def main(args:Array[String]):Unit=
{
//枚举值
println(Test1.a)
}
}
//枚举类对象
object Test1 extends Enumeration{
val a = Value(1,"alice") //Value(Int,String)固定写法
val b = Value(2,"cidy")
}
alice
应用类对象:object 类名 extends App,可直接执行,省略main方法
object Test2 extends App {
println("应用类对象")
}
应用类对象
定义类型:type
object Test3 extends App{
type Mystring = String //注意类型的首字母大写
val a:Mystring = "abc"
println(a)
}
abc