Scala中的构造器

Scala中的构造器

Scala中的构造器分为两类,主构造器和辅助构造器

主构造器是通过类名后面跟的括号里加参数列表来定义

辅助构造器是通过关键字this定义

 

定义一个无参主构造器

1
2
3
4
class rectangle(){
    val width = 0
    val height = 0
}

 

定义一个带参主构造器

1
2
3
4
class rectangle(w:Int){
    val width = w
    val height = 0
}

 

主构造器的函数体是在类里面的,可以说一个类里面除了方法和成员字段外都是主构造器的函数体,在类初始化的过程中会执行类体里面的语句。

可以在无参主构造器内这样定义和执行初始化方法

1
2
3
4
5
6
7
8
9
10
11
class rectangle(){
    var width = 0
    var height = 0
     
    Init()
     
    def Init(){
        width = 1
        height = 1
    }
}

 

用this来定义辅助构造器,在辅助构造器里必须调用主构造器,所以说类的构造过程是必须经过主构造器。

注意

默认构造器是顺序执行的也就是从第一个非函数开发执行,所以如果你的上述代码是这样写的:

Init()

var width = 0
var height = 0

width和height的值依然还是0!

 

辅助构造器一

1
2
3
4
5
6
7
8
9
class rectangle(){
    var width = 0
    var height = 0
     
    def this(w:Int){
        this()
        width = w
    }
}

 

辅助构造器二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class rectangle(){
    var width = 0
    var height = 0
     
    def this(w:Int){
        this()
        width = w
    }
     
    def this(w:Int, h:Int){
        this(w)
        height = h
    }
}

 

  

posted @   keitsi  阅读(1083)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示