scala学习笔记(7)
1.包
---------------------------------------
Scala中的包和Java或者C++中命名空间的目的是相同的:管理大型程序中的名称。
package a{
package aa{
psckage aaa{
object A{
def main(args:Array[String]):Util={
print("hello")
}
}
}
}
}
//包对象,编译完成之后生成以xxx为package,下面含有类package.class+package.class
2.scala
------------------------------
java语言脚本化
object //静态成员
class //class
trait //interface接口
def xxx(a:Int):Unit={} //函数 定义用def xxx是函数名 参数的定义,参数名:参数类型,返回值如果没有就用Unit,有等号的就是函数
def xxx(a:Int):Unit={} //过程,没有等号
val //常量
var //变量
map("->",v->k)
(1,2,3,4,5,6) //元组 tuple,最多是22维
for(x<-1 to 10 if xxx) yield //后面这个if是守卫条件,yield是集合生成条件
x=100;
Unit //()
val a:Unit = (); //defer推断
new Array(100) //100个元素null
Array(100) //1个元素,值为100,就是apply()方法的调用
"hello"(1) //charAt取出第几个元素的字符 <========>"hello".apply(1) //取出第一个位置上的字符
object //静态成员
companions object //半生对象,和类同名,必须定义在一个scla文件中,相当于把原来java中的类,静态成员和非静态的成员,都拆成两部分,访问静态成员的话,需要用伴生对象访问静态成员
package object //package.class,静态成员
class Person(.....){ //主构造
def this(....){ //辅助构造,由this来进行定义,可以带参
this(.........);
}
}
3.扩展
---------------------------------------
class Dog extends Animal{
//重写和覆盖
override def run()={..............}
}
4.类型检查
class Animal{} class Dog extends Animal{} val d = new Dog() d.isInstanceOf[Animal]
5.类型转换
-------------------------------------
$scala>val a = d.asInstanceOf[Animal] //将d转换成Animal类型,等价于java中的强制类型转换
$scala>d.getClass //得到对象的类
$scala>d.getClass ==classOf[Dog] //判断两个类是不是同一个类,精确匹配
6.超类的构造
----------------------------
类有一个主构造器和任意数量的辅助构造器,而每个辅助构造器都必须对先前定义的辅助构造器或者主构造器的调用开始,这样可能带来的问题是辅助构造器永远不可能直接调用超类的构造器。子类的辅助构造器最终会调用主构造器,只有主构造器可以调用吵类的构造器,
最新文章
- 设计模式 之 原型模式(ProtoType)
- iOS 枚举的巧用
- CodeForces 166B	(凸包)
- Flexbox属性可视化指南
- jQuery实现鼠标移上弹出提示框,移出消失
- mvc中html导出成word下载-简单粗暴方式
- 详谈JavaScript原型链
- Java String使用总结
- PureMVC 官方文档翻译(一)
- 分布式大数据系统离线分析技术解决方案(spark2.x)
- React-菜鸟学习笔记(二)
- python中时间的转换和使用datetime
- python网络编程及高并发问题
- C# Combobox联动
- Django商城项目笔记No.11用户部分-QQ登录1获取QQ登录网址
- 优化dedecms设置文章url自定义规则
- yum安装 指定安装目录
- htm5移动端开发 和 pc端开发
- Java去重字符串的两种方法以及java中冒号的使用
- tipask 不能正常解析