类型-scala扩展

自身类型

指定自身类型相当于继承(指定父类或特质),指定后即可使用自身类型的属性
_:自身类型 =>

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值