🙆♂️🙆♂️ 写在前面
🏠 个人主页:csdn春和
📚 推荐专栏:更多专栏尽在主页!
JavaWeb专栏(从入门到实战超详细!!!)
SSM专栏 (更新中…)
📖 本期文章:Scala高级语法入门 (三) Scala 面向对象编程
如果对您有帮助还请三连支持,定会一 一回访!🙋🏻♂️
📌本文目录
Scala面向对象编程
Scala 的面向对象思想和 Java 的面向对象思想和概念是一致的。
Scala 中语法和 Java 不同,补充了更多的功能
1、面向对象编程基础
1.1、package包
package 包名
包的三大作用(和java一样)
(1)区分相同名字的类
(2)当类很多时,可以很好的管理类
(3)控制访问范围
// TODO 面向对象编程 包
/* java中的包
* 1、区分相同名字的类
2、当类很多时,可以很好的管理类
3、控制访问范围
*/
/*Scala中的包
* 马丁发现package的语法过于简单 但是又不能省略 马丁给与包给更多的功能
* 1、可以让源码文件多次使用过package关键字
* 2、源码路径和包名没有关系
* 3、明确包的作用域可以在package后面加上{}
* 4、子包可以直接访问父包中的内容 无需导包
* 5、scala可以将包当成对象来使用,可以直接声明属性和方法
* */
包的命名规则
只能包含数字、字母、下划线、小圆点.,但不能用数字开头,也不要使用关键字
demo.class.exec1 //错误,因为 class 关键字
demo.12a //错误,数字开头
命名规则 一般是小写字母+小圆点
com.公司名.项目名.业务模块名
com.itch.video
包说明(包语句)
Scala 有两种包的管理风格,一种方式和 Java 的包管理风格相同,每个源文件一个包(包 名和源文件所在路径不要求必须一致),包名用“.”进行分隔以表示包的层级关系,如 com.zhou.scala。
另一种风格,通过嵌套的风格表示层级关系,如下
package com{
package zhou{
package scala{
}
}
}
第二种风格有以下特点:
(1)一个源文件中可以声明多个 package
(2)子包中的类可以直接访问父包中的内容,而无需导包
包对象
在 Scala 中可以为每个包定义一个同名的包对象,定义在包对象中的成员,作为其对应包下所有 class 和 object 的共享变量,可以被直接访问。
1.2、import导入
1)和 Java 一样,可以在顶部使用 import 导入,在这个文件中的所有类都可以使用。
2)局部导入:什么时候使用,什么时候导入。在其作用范围内都可以使用
3)通配符导入:import java.util._
4)给类起别名:import java.util.{ArrayList=>JL}
5)导入相同包的多个类:import java.util.{HashSet, ArrayList}
6)屏蔽类:import java.util.{ArrayList =>,}
7)导入包的绝对路径:new root.java.util.HashMap
Scala中基本的import导入语法和Java完全一致
import java.util.List
import java.util._ // Scala中使用下划线代替Java中的星号
Scala中导入的扩展语法
1、Scala中的import语法可以在任意位置使用
object Scala_Object02_import {
def main(args: Array[String]): Unit = {
import java.util.ArrayList
val list = new util.ArrayList()
}
}
2、Scala中可以导包,而不是导类
object Scala_Object02_import {
def main(args: Array[String]): Unit = {
import java.util // scala中可以只导入包 而不是具体的类
new util.ArrayList()
}
}
3、Scala中可以在同一行中导入相同包中的多个类,简化代码
import java.util.{
List,ArrayList}
4、Scala中可以屏蔽某个包中的类
import java.util._
import java.sql.{
Date=>_, Array=>_, _ } // 屏蔽类
5、Scala中可以给类起别名,简化使用
import java.util.{
ArrayList=>AList} // 起别名
val list1 = new AList()
6、Scala中可以使用类的绝对路径而不是相对路径
import _root_.java.util.ArrayList
7、默认情况下,Scala中会导入如下包和对象
// scala默认导入的
import java.lang._
import scala._
import scala.Predef._
1.3、类
面向对象编程中类可以看成一个模板,而对象可以看成是根据模板所创建的具体事物
基本语法
访问权限 class类名 {
类主体内容}
class User {
// 类的主体内容
}
// 对象:new 类名(参数列表)
new User()
Scala扩展语法
Scala中一个源文件中可以声明多个公共类
你知道类的加载顺序吗?
类加载的双亲委派机制
1.4、属性
属性其实就是类中的变量
object Scala_Object04_field {
def main(args: Array[String]): Unit = {
// TODO 面向对象编程 属性
// 1、所谓的属性其实就是类中的变量
// 2、编译时编译器会将变量编译为私有属性,同时提供了属性对应的公共方法 (set get)方法
val test = new Test()
// 给类的属性赋值,等同于调用对象属性的set方法
test.name = "lisi"
// 访问类的属性时,等同于调用对象属性的get方法
println(test.name)
}
class Test{
// 声明属性
// private String name = "zs";
// private final int age = 20;
var name:String = "zs"
// val 声明的属性在编译时会给属性添加final关键字,编译器不会提供属性的set方法
val age:Int = 20
// scala中变量必须显示的初始化 可以采用特殊符号使用默认初始化
var email:String = _ // 默认初始化
}
}
1.5、访问权限
Scala中的访问权限和Java中的访问权限类似,但是又有区别
private : 私有访问权限
private[包名]: 包访问权限
protected : 受保护权限&#