Scala面向对象编程
1. 面向对象编程
1.1 概述
-
Scala是一门完全面向对象的语言,摒弃了Java中很多不是面向对象的语法。虽然如此,但其面向对象思想和Java的面向对象思想还是一致的
class AndroidSys { //定义一个属性 public String company; //定义一个行为方法 public void use() { } } //创建对象 AndroidSys androidObj=new AndroidSys(); androidObj.company="google"; androidObj.use();
1.2 包用法
1.2.1 基本语法
-
Scala中基本的package包语法和Java完全一致
package com.gec.bigdata.scala
1.2.2 scala包的特点
- 可以让源码文件中多次使用package关键字
- 源码物理路径和包名没有关系
- 明确包的作用域,可以在package关键字的后面增加大括号
- 同一个源码中,子包中可以直接访问父包中的内容
- scala可以将包当成对象来用可以直接声明属性和方法
1.2.3 多次使用package
- 多次定义package
package com
package gec
package demo
object Test {
def main(args: Array[String]): Unit = {
println("test main")
}
}
- 嵌套package,体现嵌套层次关系
package com
{
package gec{
package demo{
object Test {
def main(args: Array[String]): Unit = {
println("test main")
}
}
}
}
}
-
同一个源码中,子包中可以直接访问父包中的内容
package com { package gec{ class Test2 { def test2(): Unit = { println("test2...") } } package demo{ object Test { def main(args: Array[String]): Unit = { new Test2().test2(); } } } } }
1.2.4 将package定义成对象
-
定义包对象
- 定义一个包对象,在相同的包里面的资源可以直接访问
- 只要在com.gec.demo的包下的所有的类都可以直接调用testPackageObject方法
package com.gec package object demo { def testPackageObject(): Unit = { println("test package object...") } }
-
使用包对象
package com { package gec{ package demo{ object Test { def main(args: Array[String]): Unit = { testPackageObject() } } } } }
1.3 导入包用法
1.3.1 基本语法
- Scala中基本的import导入语法和Java完全一致
1.3.2 扩展语法
-
星号在scala中有特殊用于,所以不能使用在import语法中,需要采用特殊符号:下划线
import java.util._