1.1包
1.1.1基本语法
Scala中基本的package包语法和Java完全一致
package com.yang.bigdata.scala
1.1.2扩展语法
发现package语法过于简单,但是又不能省略,Scala 扩展语法 backage更强大的功能
1.可以让源码文件中多次使用Package关键字
2.源码的物理路径和包没关系
3.明确包的作用域,可以在Package关键字后面增加大括号
4.同一个源码中,子包可以直接访问父包中的内容
5.Scala可以将包当成对象来使用
package com
package yang
package bigdata
package scala {
class Test {
def test(): Unit = {
println("test ...")
}
}
testPackageObject() //可以访问
package com.yang.bigdata.scala
package object chapter07 {
def testPackageObject(): Unit = {
println("testPackageObject ...")
}
}
1.2导入
1.2.1基本语法
Scala中基本的import导入语法和Java完全一致
import java.util.List
import java.util._ // Scala中使用下划线代替Java中的星号
1.2.2扩展语法
Java中import导入的语法比较单一,Scala对此进行扩展
1.2.2.1 import 可以在程序中任何地方使用
import java.util.Date
new Date()
1.2.2.2可以在一行中导入同一个包中的多个类
import java.util.{ArrayList,LinkedList,Map}
1.2.2.3 导包
new util.ArrayList()
1.2.2.4 隐藏类
import java.util._
import java.sql.{Date=>_,_}
new Date()
new util.ArrayList()
new Timestamp(123)
1.2.2.5scala中导入类的操作,是以相对路径(当前包路径)的方式导入,如果想要使用绝度路径,那么需要增加特殊操作: _root_
println(new _root_.java.util.HashMap())
1.2.2.5给类起别名
import java.util.{HashMap => JavaHashMap}
println(new JavaHashMap())
1.3类
1.3.1基本语法
面向对象编程中类可以看成一个模板,而对象可以看成是根据模板所创建的具体事物
// 声明类:访问权限 class 类名 { 类主体内容 }
class User {
// 类的主体内容
}
// 对象:new 类名(参数列表)
new User()
1.3.2 扩展语法
Scala中一个源文件中可以声明多个公共类
1.4属性
1.4.1基本语法
class User {
var name : String = _ // 类属性其实就是类变量
var age : Int = _ // 下划线表示类的属性默认初始化
}
1.4.2 扩展语法
Scala中的属性其实在编译后也会生成方法
class User {
var name : String = _
val age : Int = 30
private val email : String = _
@BeanProperty var address : String = _
}
1.5 访问权限
Scala中的访问权限和Java中的访问权限类似,但是又有区别:
1.5.1JAVA访问权限
java:
1.private -> 本类
2.(default) -> 本类 本包
3.protected -> 本类 本包 子类
4.public -> 公共的
1.5.2 Scala访问权限
scala:
1. private => 同类
2. private[包名] => 同包,包私有
3. protected => 受保护的 同类和子类
4. (default) =>什么都不写就是公共的 没有public关键字
1.6方法
Scala中的类的方法其实就是函数,所以声明方式完全一样,但是必须通过使用对象进行调用
object ScalaMethod{
def main(args: Array[String]): Unit = {
val user = new User
user.login("zhangsan", "admin")
}
}
class User {
def login( name:String, password:String ): Boolean = {
false
}
}
1.7对象
Scala中的对象和Java是类似的
val | var 对象名 [:类型] = new 类型()
var user : User = new User()
1.8构造方法
class User() { // 主构造函数
var username : String = _
def this( name:String ) { // 辅助构造函数,使用this关键字声明
this() // 辅助构造函数应该直接或间接调用主构造函数
username = name
}
def this( name:String, password:String ) {
this(name) // 构造器调用其他另外的构造器,要求被调用构造器必须提前声明
}
}