Spark编程基础-课堂笔记(五)

本文主要介绍类的继承,特质与模式匹配

抽象类

  • 一个类包含没有被实现的成员,使用 abstract 关键字
abstract class Car(val name:String){
	// 抽象字段没有给出初始值,必须给出类型
	val car:String
	def info()
	def greeting(){
		println("This is a car")
	}
}

扩展类

  • 使用 extends 关键字,重载父类的抽象方法不必要加 override,重载父类已经实现的方法必须加 override。可以重载 val 类型字段,不可以重载 var 类型字段,因为 var 类型本身可变。
class BMWCar extends Car{
	// 重载 var 字段
	override val car = "BMW"
	// 重载父类抽象方法
	def info(){println("override car class info")}
	// 重载父类已经实现的方法
	override def greeting(){println("This is a BMW car")}
}	

特质 trait

  • 特质定义抽象成员的时候不用 abstract 关键字
  • 类可以混入( mixin )一个或多个特质
trait Flyable{
	var maxFlyHeight:Int
	def fly()
	def breathe(){
		println("I can breathe")
	}
}

trait HasLegs{
	...
}

class Bird(flyHeight:Int) extends Flyable{
	var maxFlyHeight:Int = flyHeight
	def fly(){
		...
	}
}

// 使用with关键字 混入多个特质
class animal(flyHeight:Int) with Flyable with HasLegs{
	...
}

模式匹配

  • match 语句
  • case 类
import scala.io.StdIn._
println("Please input the score:")
val grade = readChar()
grade match{
	// case 也可以按类型匹配 
	// 比如 case i:Int
	case 'A' => println("85-100")
	case 'B' => println("70-84")
	case 'C' => println("60-69")
	case _ => println("error input")
}
// scala会自动为case类生成伴生对象 有apply方法和unapply方法
case class Car(brand: String, price: Int)
// 自动调用伴生对象的 apply 方法
val myBYDCar = Car("BYD", 89000)

package p1{
	class c1{
	...
	}
}

参考资料:《厦门大学-Spark编程基础(MOOC)》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值