属性的注意事项|学习笔记

简介: 快速学习属性的注意事项。

开发者学堂课程【Scala 核心编程-基础:属性的注意事项】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8942


属性的注意事项

 

内容简介:

一、属性的定义

二、属性的使用

三、属性的高级部分

 

一、属性的定义

1、属性的定义基本语法如同变量

两者等同,但此对象放在类之中

(1)、访问修饰符

在不编写访问修饰符的情况下,其本身默认存在,仅是提供两个公开方法使其感觉为公有。

(2)、属性名称

var 属性名称[:类型]中,[:类型]可省略

演示

var name = jack

//此处可不进行 string 的编写,可使用类型推导

2、属性值属性的定义类型

属性值属性的定义类型可以为任意类型,包含值类型或引用类型

 

二、属性的使用

1、scala 属性的声明

Scala中声明一个属性,必须显示的初始化,然后根据初始化数据的类型自动推断,属性类型可以省略(java 必须指定类型)。

2、null 值

如果赋值为 null,则一定要加类型,若不添加类型,那么该属性的类型就是 Null 类型,即系统将会报错。

(1)、实例

class Person{

var age :Int = 10

var sal= 8090.9 //给属性赋初值,省略类型, 会自动推导

var Name = null //Name 是什么类型

//此处 Name 的使用方法将会报错

var address:String = null //address 是什么类型

//此处由于指定了类型,故而为正确的使用方法

val p1 = new Person

p1.

当前情况下 address 为 string,Name 为空(null),但 address:String 指定类型后地址仍然为字符串。

image.png

println(p1.Name) //null

(2)、区别

将 null 交予一个指定类型的属性,其仍然为字符串。

例子

println(p1.Name) //null

println(p1.address) //字符串类型

3、_的使用

(1)定义

如果在定义属性时暂时不复制,也可使用符号_(下划线)让系统分配默认值。

类型

_对应的值(默认)

Byte Short Int Long(整型)

0

Float Double(小数)

0.0

String和引用类型

null

Boolean

false

(2)、实例

class A {

var var1 :string = _ //输出时为null

var var2 :Byte = _ //输出时为0

var var3 :Double = _ //输出时为0.0

var var4 :Booolean = _ //输出时为false

(3)、证明

证明 var1

var a = new A

print(a.var1) //证明此处为Null或空串“”

}

}

//进行运行

D:\program\jdk8\bin\java...

null

证明 var2

print(a.var2) //证明此处为0

print(a.var4) //证明此处为 false

//进行运行

D:\program\jdk8\bin\java...

0

false

4、属性的独立性

(1)、定义

不同对象的属性是独立、互不影响的,一个对象对属性的更改,不影响另一个。此点与 java 完全相同

(2)、举例

//创建两个对象

var worker1 = new worker

worker1.name = jack

var worker2 = new worker

worker2.name = “tom

//两个对象时完全相互独立的空间

 

三、属性的高级部分

涉及到属性的重写等。属性的高级部分与构造器(构造方法/函数)相关,此部分将在构造器部分继续继续进行讲解。

相关文章
|
网络协议 Ubuntu 网络安全
如何搭建 Jump Server
搭建 Jump Server(跳板服务器)是为了安全地管理远程服务器,通常通过 SSH 连接。
513 0
|
NoSQL 索引 MongoDB
利用MongoDB的SplitVector命令实现并发数据迁移
数据迁移是数据库运维中一个很常见的场景。数据迁移分为全量和增量。为了追求速度,通常我们会采用并发的方式对数据进行全量迁移。在全量导出数据时,通常都会选择做到记录级的并发,因此通常会涉及到对需要导出的某个表(集合)按照并发度进行切分(分区)的过程。现有常用做法是通过若干个skip加limit来找到一些分区点,然后就可以并发同时导出多个分区。事实上MongoDB还有一个SplitVector命令特别适合用来做集合的分区。本文将介绍一下如何利用这个命令来对集合做分区,实现并发数据迁移。
7122 0
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
安全 网络安全 数据安全/隐私保护
社会工程学攻击:了解并预防心理操控的网络欺诈
社会工程学攻击:了解并预防心理操控的网络欺诈
808 7
|
JSON Dart 数据格式
<大厂实战场景> ~ flutter&鸿蒙next处理后端返回来的数据的转义问题
在 Flutter 应用开发中,处理后端返回的数据是常见任务,尤其涉及转义字符时。本文详细探讨了如何使用 Dart 的 `dart:convert` 库解析包含转义字符的 JSON 数据,并提供了示例代码和常见问题的解决方案,帮助开发者有效处理数据转义问题。
534 0
|
资源调度 JavaScript API
vue-element-admin 综合开发五:引入 echarts,封装echarts 组件
这篇文章介绍了如何在vue-element-admin项目中引入并封装ECharts组件,以及如何实现折线图、柱状图和饼图的展示。
1462 4
vue-element-admin 综合开发五:引入 echarts,封装echarts 组件
|
消息中间件 存储 设计模式
JavaScript发布订阅模式:实现事件驱动编程!
JavaScript发布订阅模式:实现事件驱动编程!
|
Java Nacos Docker
"揭秘!Docker部署Seata遇上Nacos,注册成功却报错?这些坑你不得不防!一网打尽解决秘籍,让你的分布式事务稳如老狗!"
【8月更文挑战第15天】在微服务架构中,Nacos搭配Seata确保数据一致性时,Docker部署Seata后可能出现客户端连接错误,如“can not connect to services-server”。此问题多由网络配置不当、配置文件错误或版本不兼容引起。解决策略包括:调整Docker网络设置确保可达性;检查并修正`file.conf`和`registry.conf`中的Nacos地址和端口;验证Seata与Nacos版本兼容性;修改配置后重启服务;参考官方文档和最佳实践进行配置。通过这些步骤,能有效排除故障,保障服务稳定运行。
1355 0
|
存储 算法 数据可视化
深入解析力扣160题:相交链表的解决方法(哈希表法与双指针法详细图解)
深入解析力扣160题:相交链表的解决方法(哈希表法与双指针法详细图解)
|
NoSQL Java Redis
手机验证码登录
手机验证登录分为三个API接口,分别为:获取图片验证码、获取手机短信验证码、登录。 1.获取图片验证码:通过工具类生成图片验证码,将随机验证码保存到session中,将图片验证码转为base64码放到对应的entity字段里。
10077 0