scala基础与实践中
2016-05-02 14:37
351 查看
抽象类:
1.类的一个或者多个方法没有完整的定义
2.声明抽象方法不需要加abstract关键字,只需要不写方法体
3.子类重写父类的抽象方法时不需要加override
4.父类可以声明抽象字段(没有初始值的字段)
5.子类重写父类的抽象字段时不需要加override
例如:
abstract class person1{
def speak
val name : string
var age : int
}
class student1 extends Persion1{
def speak{
println("speak!!!")
}
val name = "AAA"
val age = 100
}
trait:例如:
1.字段和行为的集合
2.混入类中
3.通过with关键字,一个类可以扩展多个特质(trait)
trait logger{
def log(msg : string)
}
trait consolelogger extends logger{ //第一次继承要用extends
def log(msg : string){
println(msg)
}
}
class Test : extends ConsoleLogger{
def test{
log("ppp")
}
}
apply方法:
1.class ApplyTest{
def test{
println("test")
}
}
object ApplyTest{
def apply() = new ApplyTest
def static{
println("i'm a static method")
}
}
object Basic4 extends App{
val a = ApplyTest() //直接调用了apply方法,通过此方法a成为了一个ApplyTest对象
a.test
}
类名加括号表示object的apply方法,对象名加括号表示class的apply方法
包可以在任何地方引入,加个大括号,出了大括号就找不到了。
模式匹配:
1.标准用法(match):例如
//匹配值
val value =3
val result = value match{
case 1 if i ==1 => "one"
case 2 => " two"
case 3 => "three"
cast _ => "i'ont know"
}
//匹配类型
def t(obj : Any) = obj match{
case x : int =>println("int")
case s : string => println("string")
case _ =>println("unknown type"
}
t(1)
1.类的一个或者多个方法没有完整的定义
2.声明抽象方法不需要加abstract关键字,只需要不写方法体
3.子类重写父类的抽象方法时不需要加override
4.父类可以声明抽象字段(没有初始值的字段)
5.子类重写父类的抽象字段时不需要加override
例如:
abstract class person1{
def speak
val name : string
var age : int
}
class student1 extends Persion1{
def speak{
println("speak!!!")
}
val name = "AAA"
val age = 100
}
trait:例如:
1.字段和行为的集合
2.混入类中
3.通过with关键字,一个类可以扩展多个特质(trait)
trait logger{
def log(msg : string)
}
trait consolelogger extends logger{ //第一次继承要用extends
def log(msg : string){
println(msg)
}
}
class Test : extends ConsoleLogger{
def test{
log("ppp")
}
}
apply方法:
1.class ApplyTest{
def test{
println("test")
}
}
object ApplyTest{
def apply() = new ApplyTest
def static{
println("i'm a static method")
}
}
object Basic4 extends App{
val a = ApplyTest() //直接调用了apply方法,通过此方法a成为了一个ApplyTest对象
a.test
}
类名加括号表示object的apply方法,对象名加括号表示class的apply方法
包可以在任何地方引入,加个大括号,出了大括号就找不到了。
模式匹配:
1.标准用法(match):例如
//匹配值
val value =3
val result = value match{
case 1 if i ==1 => "one"
case 2 => " two"
case 3 => "three"
cast _ => "i'ont know"
}
//匹配类型
def t(obj : Any) = obj match{
case x : int =>println("int")
case s : string => println("string")
case _ =>println("unknown type"
}
t(1)
相关文章推荐
- Oracle schema 的含义
- C#课后习题---单选按钮实验
- 常用报表开发工具介绍
- 用堆排序实现查找最小的K个元素 java
- [Modern OpenGL系列(二)]创建OpenGL窗口
- JavaScript—内置对象
- java 对缺乏潜在类型机制的补偿 :反射
- Apache 的 httpd.conf 详解(很实用)
- NOIP2007普及组 纪念品分组 贪心
- 动态规划—Problem J
- EntityFramework之一对多关系(三)
- Xshell4连接,Linux系统中文显示乱码解决办法
- 杨辉三角hdu2032
- 【爬虫初探】新浪微博搜索爬虫总览
- scrollview嵌套listview
- Linux系统英文切换中文
- mvn常用命令
- 富贵险中求?回顾AMD历次决策之是非对错(AMD授权中国生产x86之后)
- hdu 5414 CRB and String(字符串模拟)
- Vim note