当前位置: 首页 > news >正文

爱站查询个人如何学习做网站

爱站查询,个人如何学习做网站,设计说明翻译,腾讯企业邮箱登录入口手机Scala的面向对象思想和Java有一致性,但语法上有差异且功能更丰富。 Scala包 基本语法:使用 package 包名 来定义包。 包的三大作用 : 区分同名类:当存在多个同名类时,包可以将它们区分开来,避免命名冲突…

Scala的面向对象思想和Java有一致性,但语法上有差异且功能更丰富。

Scala包

基本语法:使用 package 包名 来定义包。

包的三大作用 :

区分同名类:当存在多个同名类时,包可以将它们区分开来,避免命名冲突。

管理类:在类数量众多时,通过包来组织和管理类,让代码结构更清晰。

控制访问范围:可以设置包内成员的访问权限,限定哪些代码可以访问包内的类、方法等元素 。

包的命名

命名规则:包名只能由数字、字母、下划线、小圆点组成,不能以数字开头,也不能使用关键字。比如 demo.class.exec1 ( class 是关键字所以错误 )、 demo.12a (数字开头所以错误 )。

命名规范:一般采用小写字母加小圆点的形式,常见格式是 com.公司名.项目名.业务模块名  ,例如 com.zpark.oa.model  、 com.sohu.bank.order  

包说明(包语句)

Scala有两种包管理风格。一种和Java类似,每个源文件对应一个包,包名和源文件路径不强制一致,用 . 分隔表示层级,如 com.zpark.scala  。另一种是嵌套风格,像 package com{ package zpark{ package scala{ } } }

包对象

定义

在Scala里,能为每个包定义一个同名的包对象。包对象里定义的成员,是对应包下所有类(class)和单例对象(object)可共享的变量,能被直接访问。例如 package object com { val shareVal = "share" def shareMethod() = {} }  ,这里 shareVal 和 shareMethod  可在 com 包下的类和对象中直接使用。

说明

Java包管理风格下 :若采用Java的包管理方式,包对象一般定义在对应包下的 package.scala 文件中,且包对象名要和包名一致 。

嵌套包管理风格下 :要是用嵌套方式管理包,包对象可与包定义在同一文件里,但得保证包对象与包声明处于同一作用域 。例如 package com { object Outer { val out: String = "out" def main(args: Array[String]): Unit = { println(name) } } package object com { val name: String = "com" } }  , Outer 对象里能直接访问包对象 com 中定义的 name  。

导包说明

常规导入 :和Java类似,可在文件顶部用 import 导入包,这样文件里所有类都能使用导入包中的内容。

局部导入 :在需要使用相关类或对象的作用范围内进行导入即可 。比如在某个方法内导入特定包,仅在该方法内有效。

通配符导入 :使用 import java.util._  ,可导入 java.util 包下的所有类和对象 。

给类起名(重命名导入) :像 import java.util.{ArrayList=>JL}  ,将 java.util.ArrayList 导入并在当前作用域内重命名为 JL  。

导入相同包的多个类 : import java.util.{HashSet, ArrayList}  ,一次导入 java.util 包下的多个类 。

屏蔽类 : import java.util.{ArrayList => _}  ,表示导入 java.util 包下除 ArrayList 之外的其他内容 。

导入包的绝对路径 : new _root_.java.util.HashMap  ,可通过绝对路径导入类,这里 _root_  是Scala里表示根包的特殊标识 。

类和对象

类可看作模板,对象是类的具体实例 。

定义类

回顾Java中的类 :Java中若类是 public 修饰,类名必须和文件名一致,通常一个 .java 文件有一个 public 类 。而Scala没有 public 修饰,一个 .scala 文件能写多个类 。

基本语法 : [修饰符] class 类名 { 类体 }  。Scala里类默认具有公有可见性 ,无需像Java那样用 public 修饰 。

属性

基本语法 :用 [修饰符] var|val 属性名称 [: 类型] = 属性值 定义属性 。 var 定义的属性可变, val 定义的属性不可变 。使用 @BeanProperty 注解,能自动生成规范的 setXxx/getXxx 方法 。

Scala中的访问权限

说明

与Java对比:Java访问权限有 public 、 private 、 protected 和默认(包访问权限 )。Scala能通过类似修饰符实现类似效果,但存在使用差异。

Scala权限特点

默认权限:Scala中属性和方法默认访问权限为 public ,不过Scala没有 public 关键字。

 private 权限:表示私有权限,仅在类内部和伴生对象中可访问。

 protected 权限:受保护权限,Scala中比Java更严格,仅同类、子类可访问,同包其他类无法访问。

 包访问权限: private[包名] 可增加包访问权限,让指定包名下的其他类也能使用 。

Scala方法定义

基本语法:使用 def 方法名(参数列表) [: 返回值类型] = { 方法体 }  定义方法。 def 是定义方法的关键字,参数列表指定传入参数的名称和类型,返回值类型可省略(编译器能自动推导时 ),方法体包含具体执行逻辑。

创建对象

基本语法:用 val | var 对象名 [: 类型] = new 类型()  创建对象。 val 修饰的对象引用不可变(内存地址不变 ),但对象属性值可变; var 修饰的对象引用和属性值都可变 。

Scala构造器

整体概念

和Java类似,Scala创建对象需调用构造方法,且能有多个构造方法。Scala类的构造器分为主构造器和辅助构造器 。

基本语法

主构造器:定义在类名后的圆括号内,如 class 类名(形参列表) { // 主构造器 // 类体 }  ,主构造器的参数会参与类的初始化 。

辅助构造器:使用 def this(形参列表) { // 辅助构造器 }  定义,函数名固定为 this  ,可定义多个,编译器依据参数个数和类型区分 。

说明

辅助构造器特征:辅助构造器函数名是 this  ,可重载(有多个 ),靠参数个数和类型区分 。

调用规则:辅助构造方法不能独立构建对象,必须直接或间接调用主构造方法 ;构造器调用其他构造器时,被调用的构造器需先声明 。

构造器参数

说明:Scala主构造器函数的形参有三种类型 。未修饰参数是局部变量; var 修饰参数可作为类的可变成员属性; val 修饰参数是类的只读属性 。

封装

原理:封装是将数据和操作数据的方法封装,数据被保护,通过授权操作(成员方法 )访问。

Java与Scala对比:Java通过私有化属性,提供 set 和 get 方法实现封装 。Scala属性底层 public 实际是 private  ,通过 get 和 set 方法操作,不推荐照搬Java方式,但为和Java框架兼容,可用 @BeanProperty 注解生成 setXxx/getXxx 方法 。

继承和多态 - 基本语法

使用 class 子类名 extends 父类名 { 类体 }  实现继承 。子类继承父类属性和方法,Scala是单继承(一个子类只能有一个直接父类 )。

Scala 中属性和方法都是动态绑定,而Java 中只有方法为动态绑定

 

http://www.dtcms.com/a/541886.html

相关文章:

  • 怎么开发一个网站安徽省建筑工程信息平台
  • 石家庄网络建站中粮我买网是哪个公司做的网站
  • vue2弹出框组件demo
  • G-Star Landscape 3.0 更新,网页版同步上线!
  • 让进程永不掉线:Linux nohup命令的深度指南
  • 虚拟机上部署Web项目
  • 做类似淘宝的网站需多少资金销售类wordpress
  • wix做的网站在国内访问不了网站谁做的
  • 亚远景-ISO 26262与ISO 21434:汽车安全标准的双基石
  • 模板网站难做seo天津建站管理系统价格
  • ModbusRTU转CCLKIE网关:解决管廊老旧排水仪表接入三菱高速网络瓶颈
  • 女朋友做网站wordpress 在线浏览
  • 做电影网站为什么查封不了一键打开多个wordpress
  • 游戏盾是如何保障游戏安全稳定的?
  • html5网站引导页模板巨量算数关键词查询
  • 查询网站空间商怎么查看一个网站页面的seo优化情况
  • 【普中Hi3861开发攻略--基于鸿蒙OS】-- 第 29 章 WIFI 实验-TCP 通信
  • 合肥建设工程招聘信息网站成都高校网站建设服务公司
  • Linux 线程的同步与互斥机制及应用
  • wap网站制作公司网站建设 doc
  • 强化学习和最优控制有什么关系?
  • 示范专业网站建设如何建立像淘宝一样的网站
  • LeetCode 刷题【136. 只出现一次的数字、137. 只出现一次的数字 II】
  • 信宜手机网站建设公司免费的wordpress账号
  • 6 个 Docker 高级功能
  • AGENT 和自动化工作流的区別
  • 【计算机软件资格考试】软考案例分析题及解析模拟题9
  • 描述一下网站建设的基本流程深圳建设网站费用
  • 长沙网站设计服务商上海网站建设科技公司
  • Langchain从零开始到应用落地案例[AI智能助手]【5】---实现基于FastAPI+Langchain+ocr实现上下文对话大模型对话接口