大数据——Scala进阶(begin)

本文详细介绍了Scala中的统一类型系统,包括Any、AnyVal和AnyRef,以及Nothing和Null的概念。进一步讲解了类的定义、构造器、私有成员和getter/setter的使用。探讨了特质的定义、使用和子类型概念,以及如何通过混入实现类的组合。此外,还涵盖了元组、高阶函数、嵌套方法、多参数列表和案例类的特性,提供了丰富的代码示例和解析。
摘要由CSDN通过智能技术生成

一、统一类型(Unified Types


1.1   Scala类型层次解构  

改图摘自:https://docs.scala-lang.org/zh-cn/tour/unified-types.html
Scala类型层次解构

Any 是所有类型的超类型,也称为顶级类型。

Any 定义了通用的方法:equalshashCodetoString

Any 有两个子类:AnyVal AnyRef

AnyVal 代表值类型。分为四类八种 + Unit

四类八种:四类(整型,浮点型,字符型,布尔型)

整型:Byte(字节型)、Short(短整型)、Int(整型)、Long(长整型)

浮点型:Float(单精度浮点型)、Double(双精度浮点型)

字符型:Char(字符型)

布尔型:Boolean(字符型)

Unit:不带任何意义的值类型,仅有一个实例可以像这样声明:( )

AnyRef 代表引用类型。所有非值类型都被定义为引用类型。

AnyRef 包含 ListOptionYourClass

1.2   类型转换  

值类型阔以按照此方向进行转换

1.3   Nothing 和 Null   

Nothing 是所有类型的子类型(底部类型)。

作用:给出非正常终止的信号(抛异常、程序退出、无限循环)

不对值进行定义的表达式类型,或是一个不能正常返回的方法。

Null 是所有引用类型的子类型。

作用:主要是使得Scala 满足和其他JVM语言的互操作性。

有一个被关键字 null 定义的单例值。

 

二、类(Classes


2.1  类定义  

类的定义:关键字 class + 标识符(类名首字母应大写)

使用关键字 new 创建类的实例,

类没有定义任何构造器,默认只有一个无参构造器。

方法重写(Override)

toString方法

def toString: String = {

}

重写toString方法

override def toString: String = {
    #重写toString方法的方法体
}

特殊使用:s

class Person(name: String = "名字",job: String = "工作")
{
  override def toString() : String = {
      
    //"名字:" + this.name + ",工作:" + job;
    s"名字是$name,工作是$job";
    
  }
}
var person01 = new Person()
println("重写toString():"+person01);
var person02 = new Person("小明","学生")
println("重写toString():"+person02);
var person03 = new Person(name="小明")
println("重写toString():"+person03);
var person04 = new Person(job="学生")
println("重写toString():"+person04);

 

2.2  构造器   

类的有参构造器:在类名后面的小括号内阔以定义类的参数。

class Point(var x: Int,var y: Int)

给类的有参构造器的参数设置默认值。阔以在创建类的实例时,带名传参。

class Point(var x: Int = 0,var y: Int = 0)

Task:设置 Point 的 y 值,并打印到控制台。

val point2 = new Point(y = 22);
println(point2.y);    //Console: 22

总结:

1、使用关键字 class 可以定义类。class 类名

2、在类名后的小括号内阔以设置类的参数。类名(var 参数1: 参数类型1,var 参数2: 参数类型2)

3、在创建类的实例时,阔以通过参数名为类的参数赋值。类名(参数=值)

4、阔以通过类的对象名调用类的参数值。对象名.参数名

 

2.3  私有成员和 Getter/Setter  

class Person{
    private var _name = "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值