Scala中abstract 、Trait的学习与使用

一.抽象类:abstract

//定义一个动物类
//当我们在类前加上abstract,那么这个类就是抽象类
 abstract class Aninal {
  def characteristic():Unit=println("动物")
}

//定义一个鸡类,继承动物类
class Chicken extends Aninal{
//继承后重写需要加关键字override,如果父类中的方法没有实现,那么重写的时候不用加override
  override def characteristic(): Unit =println("鸡是动物")
}

object Aninal{
	def main(args:Array[String]):Unit={
		//实例化一个鸡的对象
		val chicken:Chicken=new Chicken
		//调用characteristic函数
		chicken.characteristic
		
	}
}

//输出
鸡是动物

二.特征:Trait

//创建一个特征"叫",不实现
trait t1{
  def yell():Unit
}

//创建一个特征"飞",实现
trait t2{
  def fly():Unit={println("飞")}
}

//创建一个特征"跑",实现
trait t3{
  def run():Unit={println("跑")}
}

//定义一个chicken类添加特征通过"with 特征名"
class chicken with t1 with t2 with t3{
	//重写第一个特征
	def yell():Unit=println("鸡会叫")
	//重写第二个特征,因为在特征类中函数被实现,所以重写需要加override	
	override def fly():Unit=println("鸡会飞")
	//第三个特征不重写
}
object Chicken{
	def main(args:Array[String]):Unit={
		//实例化一个鸡的对象
		val chicken:Chicken=new Chicken
		chicken.yell
		chicken:fly
		//即使没有重写也是可以使用特征中实现的函数
		chicken:run
	}
}

//输出
鸡会叫
鸡会飞
跑

面试题:当继承的类或特征有相同的函数,那么重写函数的时候如果使用原函数(super.函数),那么会跑到哪个类或特征中的函数呢?
解答:当需要调用到原函数时,会从继承顺序从后往前找

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值