Scala--包--笔记

Scala中将包的提升到了很高的地位,而Java中比较简单

1.包的引入

1)Scala中,import包可以出现在任何地方,并不限于文件顶部,import语句的范围是从引入开始,一直延申到包含该语句的块末尾。可以在需要时引用,缩小import包的作用范围,提高效率
在这里插入图片描述
2) _ 下划线表示将包中所有内容引入,等价于 *

3)如果不想要包中全部的类,而只是包中一部分的类,可以采用选择器{}
import scala.
4)如果引入的多个包中有相同的类,可以将不需要的类进行重命名进行区分
在这里插入图片描述
5)若某个冲突的类根本不会用到,那么这个类可以直接隐藏掉
在这里插入图片描述

6)Scala中,自动引入的包有:
lang
scala
Predef

2. 打包方式

package com.ah{
	package scala{
		calss Person{
			......
		}
	}
}

这样可以在一个文件中同时创建多个包,以及给各个包创建类
注:路径*idea project\scalatest2\target\classes\com*

3.import

子包可以直接调用父包的类,但父包调用子包的类需要使用import
import 不需要一定在开头写, 在代码中写也可以

5. 包可以包含类,对象和特质,但不能包含函数/方法/变量。这是java虚拟机的局限,为弥补这一点不足,Scala提供了包对象的概念来解决这个问题
1)不能在包中直接写方法和定义变量
2)每一个包都可以有一个包对象,需要在父包中定义
3)包对象的名字需要和子包的名字一样
4)在包对象中定义的变量和方法,可以在对应的包中使用
5)在底层,包对象会生成两个类,一个是package.class 和 package$.class

6.可见性

Java包的可见性
在这里插入图片描述

7.伴生类 伴生对象

先介绍伴生类伴生对象
一个文件中,class 和 object 的名字相同时,如class Clerk,object Clerk同时出现。
称class Clerk 为伴生类,object Clerk为伴生对象
在伴生类中写入非静态内容
在伴生对象中写入静态内容

在这里插入图片描述

Scala包的可见性

1)当属性访问权限为默认时,从底层看属性是 private 的,但是提供了xxx_$eq(),xxx()方法,从效果上看是任何地方都可以访问
2)方法访问权限为默认,从底层看是 public 的
(注意,属性默认是private,方法默认是public)
3)private 为私有权限,只在类的内部和伴生对象中可用
4)protected 为受保护权限,Scala中比Java更严格,只能子类访问,同包无法访问
5)Scala中没有public 关键字,不能用public 显示的修饰属性和方法(前面的public是从Java角度看的)
6)包访问权限
见下面的例子,因为Person中name属性是private的,所以在Visit中无法访问
在这里插入图片描述
加上包访问权限后便可以访问:
在这里插入图片描述

注:Scala中包名和源码所在的文件目录结构可以不一致,但是编译后的字节码文件路径和包名会保持一致(工作由编译器完成)

关于韩顺平老师Scala的笔记

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值