Scala包

2023-11-06

目录

1.1简介

1.2格式

1.3作用域

1.4包对象

1.5包的可见性

1.6包的引入


1.1简介

注意:

1.编写scala源代码的时候,包名和源码所在的目录结构可以不一致

2.编译后,字节码文件和包名路径会保持一致(由编译器自动完成)

3.包名由数字,大小写英文字母,_下划线,$美元符号组成,多级包之间用.隔开,一般是公司域名反写。

例如: com.itheima.demo01, cn.itcast.demo02

1.2格式

1.文件顶部标记法,合并版

 package 包名1,包名2,包名3    //根据实际需求,可以写多级包名
 //可以写类,特质....

2.文件顶部标记法,分解版

 package 包名1,包名2
 package 包名3
 //这里写类,特质......

3.串联式包语句

 package 包名1,包名2{
     //包名1的内容在这里不可见
     package 包名3{
      //这里写类,特质......   
     }
 }

注意:上述着这种写法,建议包名嵌套不要超过三级

1.3作用域

1.下层可以直接访问上层中的内容。

2.上层访问下层内容时,可以通过导包(import)或者写全包名的形式实现。

如果上下层有相同的类,使用时采用就近原则(优先使用下层)。

3.上层访问下层内容时要先导包

1.4包对象

包中可以定义子包,也可以定义类或特质,但是scala中不允许直接在包中定义变量或者方法,这是因为JVM的局限性导致的,要想解决此问题,需要用到包对象了。

概述:

在scala中,每一个包都有一个包对象,包对象的名字和包名必须一致,而且他们时平级关系,不能嵌套定义。

注意:

1.包对象也要定义到父包中,这样才能实现包对象和包的平级关系

2.包对象一般用于对包的功能进行补充,增强等

格式:

 package 包名1{//父包
     package 包名2{//子包
         
     }
     package object 包名2{//包名2的包对象
         
     }
 }

案例:

 package com.itheima{//父包
   package scala{//子包
     class A
     trait B
   object ClassDemo03{
       def main(args:Arry[String]):Unit={
 //测试包对象中的成员
         println(scala.name)
         scala.sayHello()
       }
   }  
   }  
     //定义包对象
     package object scala{//scala包的包对象
         var name="张三"
         def sayHello():Unit=println("Hello Scala!")
         
     }
 }
 ​

1.5包的可见性

通过访问权限修饰符 private、protected、默认来限定访问修饰符。

例如:

 private[com] var name=""

1.6包的引入

Scala 默认引入了 java.lang 包的全部内容,scala 包以及 Predef 包的部分内容。

包的引入不限于Scala 文件的顶不,而是可以编写到任何需要使用的地方。

如果需要导入某个包中的所有类和特质,使用下划线 _ 实现。

如果需要的时某个包的某几个类和特质,可以通过选取器 {}实现。

如果引入的多个包含有相同的类,可以通过重命名或隐藏解决。

重命名格式:

import java.util.{HashSet => JavaSet}

隐藏格式:

import java.util.{HashSet => ,}//引入util包下除了HashSet的类

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala包 的相关文章

  • 【数据集处理】WiderPerson介绍以及转YOLO格式(图片教程及代码----超详细)

    WiderPerson转YOLO格式 WiderPerson介绍 原论文中数据信息 下载后的文件样式 Annotations WiderPerson转YOLO 数据集下载地址 转格式以及选取类别 关于txt文件的处理 直接运行 生成yolo
  • 【网络安全】黑客自学笔记

    1 前言 作为一个合格的网络安全工程师 应该做到攻守兼备 毕竟知己知彼 才能百战百胜 计算机各领域的知识水平决定你渗透水平的上限 1 比如 你编程水平高 那你在代码审计的时候就会比别人强 写出的漏洞利用工具就会比别人的好用 2 比如 你数据
  • Feign远程调用注意事项

    Feign 远程查询失败 不需要回滚 CPU密集型和 IO密集型 CPU涉及的是计算能力 IO是文件读取类型的这种
  • 共识算法 --- PBFT、Raft和Paxos

    目录 一 Raft共识算法 1 什么是Raft 2 Raft的工作流程 3 Raft的相关应用 4 Raft的缺陷 5 Raft中三个子问题 5 1 Leader选举 Election 5 1 1 节点的三种角色 5 1 2 选举过程 5
  • 字节是真的难进,测开4面终上岸,压抑5个月,终于可以放声呐喊

    这次字节的面试 给我的感触很深 意识到基础的重要性 一共经历了五轮面试 技术4面 HR面 下面看正文 本人自动专业毕业 压抑了五个多月 终于鼓起勇气 去字节面试 下面是我的面试过程 很多面试题 都是靠记忆写的 希望能帮助到大家 致那些努力的
  • http各个版本的区别

    http进化史 http0 9 只有GET请求 也不支持请求头信息 请求信息只有下面一行 GET www baidu com http1 0 在请求中指定版本号 支持GET POST HEAD http1 1 http1 1新增了 OPTI
  • 进制压缩加密_token参数

    进制压缩加密 token参数 网址 https sh meituan com meishi c17 进入抓包 查看要获取的数据 可以在请求地址 找到 getPoiList 的请求链接 请求参数有多个 但是多次请求对比发现只有 token 参
  • LeetCode:118(Python)—— 杨辉三角(简单)

    杨辉三角 概述 给定一个非负整数 numRows 生成 杨辉三角 的前 numRows 行 在 杨辉三角 中 每个数是它左上方和右上方的数的和 输入 numRows 5 输出 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 输入
  • 超经典!分割任务数据集介绍。

    文章目录 前言 一 IRSTD 1k 二 Pascal VOC2012 1 数据简介 2 分割任务数据集介绍 三 iSAID 总结 前言 在探索网络的过程中 比较基础和重要的工作是了解数据 今天来总结下我目前使用过的分割任务数据集 本博文将
  • Linux进阶_DNS服务和BIND之实战案例篇

    成功不易 加倍努力 1 实战案例 实现DNS正向主服务器 2 实战案例 实现DNS从服务器 3 实战案例 实现DNS forward 缓存 服务器 4 实战案例 利用view实现智能DNS 5 实战案例 综合案例 实现Internet 的D
  • 【linux多线程(四)】——线程池的详细解析(含代码)

    目录 什么是线程池 线程池的应用场景 线程池的实现 线程池的代码 C linux线程 壹 初识线程 区分线程和进程 线程创建的基本操作 线程 二 互斥量的详细解析 线程 三 条件变量的详细解析 什么是线程池 线程池是一种线程使用模式 它是将
  • java 栅栏_Java并发基础-栅栏(CountDownLatch)与闭锁(CyclicBarrier)

    1 闭锁CountDownLatch 闭锁CountDownLatch用于线程间的同步 它可以使得一个或者多个线程等待其它线程中的某些操作完成 它有一个int类型的属性count 当某个线程调用CountDownLatch对象的await方
  • android获取各种系统路径的方法

    android获取各种系统路径的方法 整理了一些安卓开发中可能会用到的各种路径的获取方法 欢迎评论 通过Environment获取的Environment getDataDirectory getPath 获得根目录 data 内部存储路径
  • Spring Boot + 阿里OSS实现图片上传,返回预览的地址,实现图片预览

    阿里OSS实现图片上传 返回预览地址 注册阿里OSS 首先进入阿里云的官网 https www aliyun com 紧接着点击首页上的立即开通 点击这个创建一个bucket 其余的默认就可以 可以根据自己的实际需求去写 使用代码操作阿里O
  • Redis AOF和RDB

    Redis AOF和RDB Redis是内存型数据库 为了保证数据在断电后不会丢失 需要将内存中的数据持久化到硬盘上 RDB持久化 将某个时间点的所有数据都存放到硬盘上 可以将快照复制到其他服务器从而创建具有相同数据的服务器副本 如果系统发
  • vue不是内部或外部命令,也不是可运行的程序

    使用vue脚手架初始化vue项目时 总是报 vue不是内部或外部命令 也不是可运行的程序 这样的错误 检查基础环境是否具备 1 node v查看版本 已经安装 2 npm v查看版本 已经安装 3 node 系统环境变量已经设置 于是乎 查
  • Error: Cannot fit requested classes in a single dex file (# methods: 65948 > 65536) 解决方法

    Error Cannot fit requested classes in a single dex file methods 65948 gt 65536 解决方法 最近写项目 写着写着运行时突然就报错了 运行不起来了 报错如下 Erro
  • 【django】admin后台管理的坑

    自定义的主键 必须要在fields或者fieldsets里 但是默认添加的或者自主添加的autofield字段可以不在admin页面里添加 保存时会自动添加
  • A股投资日历

    A股投资日历 12月2日 国11月非农就业报告 21 30 中证AAA综合债指数系列 8条 发布 2022中国 博鳌 国际黄金市场年度大会举办 影响 宏观 债券 黄金 12月2 3日 第四届大宗商品金融服务创新锋会 影响 大宗商品 12月2

随机推荐