Scala高级语法入门 (三) Scala 面向对象编程 多图详解

🙆‍♂️🙆‍♂️ 写在前面

​🏠​ 个人主页: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 : 受保护权限&#
  • 37
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 54
    评论
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值