大数据全系列 教程
1869个小节阅读:467.9k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
5.4.2 特征基本使用
Scala将多个类的相同特征从类中剥离出来,形成一个独立的语法结构,称之为“特质”(特征)。这种方式在Java中称之为接口,但是Scala中没有接口的概念。所以scala中没有interface关键字,而是采用特殊的关键字trait来声明特质, 如果一个类符合某一个特征(特质),那么就可以将这个特征(特质)“混入”到类中。这种混入的操作可以在声明类时使用,也可以在创建类对象时动态使用。
xxxxxxxxxx
package com.itbaizhan.chapter05
import com.itbaizhan.chapter04.Animal
object TraitDemo {
//TODO 1.特质(特征)定义:将多个类中相同的特征,从对象中剥离出来,形参独立的一个结构,称之为特质或特征(trait)
/*这种方式在Java中称之为接口,但是Scala中没有接口的概念。
所以scala中没有interface关键字,而是采用特殊的关键字trait来声明特质*/
trait Eatable{
def eat():Unit
}
//TODO 2.如果一个类符合某一个特征(特质),那么就可以将这个特征(特质)加入到类中,这个过程被称为混入。
//这种混入的操作可以在声明类时使用,使用关键字extends。
class Dog extends Eatable{
override def eat(): Unit = {
println("吭哧吭哧的eat...")
}
}
//TODO 3.如果一个类有多个特征,第一个特征前使用extends关键字,后面的特征前使用with关键字
trait Sleepable{
def sleep():Unit
}
class Cat extends Eatable with Sleepable {
override def eat(): Unit = {
println("嘎吱嘎吱的eat...")
}
override def sleep(): Unit = {
println("呼噜呼噜的sleep...")
}
}
//TODO 4.如果当前类既有父类,又要混入特征:extends 父类 with 特征
class Tiger extends Animal with Eatable with Sleepable{
override def eat(): Unit = {}
override def sleep(): Unit = {}
}
//TODO 6.定义对象实例化时动态混入的特征
trait Drinkable{
//用于new对象时混入的特征类的方法需要实现。
def drink(): Unit ={
println("drink....")
}
}
def main(args: Array[String]): Unit = {
//TODO 5.也可以在对象实例化时动态的混入
val dog = new Dog() with Drinkable
dog.eat()
dog.drink()
}
}