scala 主从构造器
package cn.scala_base.oop.scalaclass /**
* 构造器分为两种,一种是主构造器,另一种是从构造器,所有的从构造器必须在其方法体
* 的第一行调用主构造器
*
* Man的主构造器无参数,所以调用时采用this();
*/
class Man {
var name: String = _;
var age: Int = _; //可以有多个从构造器,类似方法重载
def this(name: String) {
this();
this.name = name;
} def this(age: Int) {
this();
this.age = age;
}
def this(name: String, age: Int) {
this(name);
this.age = age;
//不能再写this(age);会造成重复调用主构造器 } //或者
/*def this(name:String,age:Int) {
this();
this.name = name;
this.age = age;
}*/ } //主构造器与类名放在一起,所有未写在方法体(或者说是代码块)中的代码均被视为主构造器的代码,如果主构造器中的参数被方法使用了,
//则会被声明成private[this],否则该参数仅仅属于主构造器,与new出的对象无关
class Person(name: String) {
println(name);
private var age = 0; def getName = name; //从构造器
def this(name: String, age: Int) {
this(name);
this.age = age;
} }
//可以给主构造器的参数设置默认值,这样new的时候可以不用传递参数.如果还被val修饰则不能再被该类的其他方法修改
class Person2(val name: String = "yeye") {
println(name); } object Constructor {
def main(args: Array[String]): Unit = { //主构造器无参,可以省略()
val m = new Man; /*val p = new Person("yeye");
println(p.getName);*/ val p2 = new Person2(); } }
scala 主从构造器的更多相关文章
- scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类
一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person ...
- Scala主构造器、私有构造器、构造器重载
Scala中的主构造器跟在定义类的时候声明类名之后 如下: class scala(arg : String) { // } private[this] 修饰该字段只能被当前所对应的对象所访问,其他对 ...
- Scala辅助构造器和主构造器
和java或c++一样,scala也可以有任意多的构造器.不过,scala类有一个构造器比其它所有构造器都更为重要,它就是主构造器.除了主构造器之外,类还可以有任意多的辅助构造器. 有两点需要注意: ...
- 【scala】构造器
和Java或C++一样,Scala可以有任意多的构造器. 不过Scala类有一个构造器比其他所有构造器都更为重要,它就是主构造器. 除了主构造器之外,类还可以有任意多的辅助构造器. 主构造器 在Sca ...
- scala之构造器详解
1.基本语法: 构造器分为主构造器和辅助构造器 class 类名(形参列表) { // 主构造器 // 类体 def this(形参列表) { // 辅助构造器 } def this(形参列表 ...
- Scala主构造器参数是否升级为成员与是否有get/set
1:主构造器前面添加val/var 关键字则升级为类成员,否则只是构造器中的一个参数而已. 2:private 修饰get/set方法权限,private var/val 成员变量,则有get/set ...
- 浅析 Scala 构造器
2019-04-15 关键字:Scala 主构造器.Scala 辅助构造器.Scala 构造器的区别 本篇文章系笔者根据当前所掌握知识对 Scala 构造器的一些心得总结,不保证文章所述内容的绝对.完 ...
- Scala 中的构造器
Scala上的从构造器也有一定的限制,Scala编程中写道. “Scala 里的每一个从构造器的第一个动作都是调用同一个类里面其他的构造器.换句话说 就是,每个 Scala 类里的每个从构造器都是以“ ...
- Effective Scala
Effective Scala Marius Eriksen, Twitter Inc.marius@twitter.com (@marius)[translated by hongjiang(@ho ...
随机推荐
- 【Codeforces Round #446 (Div. 2) B】Wrath
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 倒着来,维护一个最小的点就可以了. [代码] #include <bits/stdc++.h> using namesp ...
- maven 详细描述
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- HDU1969 Pie(二分搜索)
题目大意是要办生日Party,有n个馅饼,有f个朋友.接下来是n个馅饼的半径.然后是分馅饼了, 注意咯自己也要,大家都要一样大,形状没什么要求,但都要是一整块的那种,也就是说不能从两个饼中 各割一小块 ...
- 关于Newtonsoft.json JsonConvert.DeserializeObject反序列化的使用
object obj = JsonConvert.DeserializeObject("{\"Sta\":3}", paramClass); //paramCl ...
- python3 求斐波那契数列(Fibonacci sequence)
输出斐波那契数列的前多少个数. 利用函数 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan # ----斐波那契数列( ...
- FTP、SSH、NFS等环境工具的安装
注意:通过ftp互传文件或者通过ssh登录的时候,ubuntu需要使用bridged上网环境 ftp: sudo apt-get install vsftpd sudo vi /etc/vsftpd. ...
- ios 不支持屏幕旋转
- (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskPortrait; }
- 【b702】字符串的展开
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 在初赛普及组的"阅读程序写结果"的问题中,我们曾给出一个字符串展开的例子:如果在输入 ...
- js中数组如何使用
js中数组如何使用 一.总结 一句话总结:new Array()和[]两种方法都可以创建数组. 二.js中创建数组,并往数组里添加元素 数组的创建 var arrayObj = new Array() ...
- phpstorm 2018本地激活
这是简书上找到的,害怕以后找不到,记录一下网址为https://www.jianshu.com/p/133af2e4fe3f