Scala辅助构造器和主构造器】的更多相关文章

和java或c++一样,scala也可以有任意多的构造器.不过,scala类有一个构造器比其它所有构造器都更为重要,它就是主构造器.除了主构造器之外,类还可以有任意多的辅助构造器. 有两点需要注意: 辅助构造器的名称为this.(在java或c++中,构造器的名称和类名相同--当你修改类名时就不那么方便了.) 每一个辅助构造器都必须以一个对先前已定义的其它辅助构造器或主构造器的调用开始. 一个类如果没有显式定义主构造器则自动拥有一个无参的主构造器. class Person_1 { privat…
/** * 主构造器直接定义在类名称的后面,参数列表和类名写在一起 * 主构造器的参数会自动提升为对象的属性,不需要在对象中重新定义一遍 */ class Student(val id: Int, name: String) { println("主构造器开始执行") //Student类的私有属性 private val city = "beijing" //调用object Student的私有属性 def events() = println(Student.…
类 package com.zy.scala.cls /** * 在 Scala 中,类并不用声明为 public 类型的. * Scala 源文件中可以包含多个类,所有这些类都具有共有可见性. */ class Person { //用 val 修饰的变量是可读属性,有 getter 但没有 setter(相当与 Java 中用 final 修饰的变量) val id = "9527" //用 var 修饰的变量都既有 getter,又有 setter var age: Int =…
Scala中的主构造器跟在定义类的时候声明类名之后 如下: class scala(arg : String) { // } private[this] 修饰该字段只能被当前所对应的对象所访问,其他对象无法访问,即使该对象是同种类型(Teacher),如果想让同类之间可以相互访问,把this换成类名即可. def this()定义的是附属构造器,附属构造器一般都会调用this主构造器. 构造器重载,可以在class Teacher后面加上parivate将主构造器声明未私有,这样构造类的时候,只…
1:主构造器前面添加val/var 关键字则升级为类成员,否则只是构造器中的一个参数而已. 2:private 修饰get/set方法权限,private var/val 成员变量,则有get/set方法但是都是私有的方法.…
008-Scala主构造器.私有构造器.构造器重载实战详解 Scala主构造器实战 无参数的主构造器 分析 1.name 需要赋初值,一般通过占位符来代表空值 2.private 声明私有的age 生成的getter/setter方法也是私有的;不加则私有的age生成公有的getter/setter方法 3.private[this] 表示是只属于当前的实例本身,别人无法通过实例访问,也就是说再实例化对象也不可以访问此属性 4.def定义辅助构造器(重载构造器),其他的重载构造器必须调用主构造器…
1. 引言 了解Java初始化的顺序,有助于理解Java的初始化机制和内存机制. 顺序:父类static变量->子类static变量->父类成员变量->父类构造器->成员变量->构造器->main函数(说明:static变量包括static变量和static代码块,按位置顺序执行) 2. 样例 2.1 无继承的类的初始化顺序 public class TestClass { public static void main(String[] args) { // TODO…
只有当类不包含显式的构造器时,编译器才会生成一个公有的.无参的缺省构造器.只要让一个类包含私有构造器,这个类就不能被实例化了.示例: // 工具类 public class UtilityClass { // 私有构造器 private UtilityClass { throw new AssertionError(); } // 其他操作... } AssertionError避免在类的内部调用构造器,保证该类在任何情况下都不会被实例化.同时,这个类不能被子类化,因为子类构造器无法显式或隐式地…
package com.wtd; public abstract class Car { private String name= "car"; public Car(String name) { this.name = name; } } public class JeepCar extends Car { public JeepCar(String name){ super(name); } } 现在我要创建JeepCar的实例,JeepCar jC= new JeepCar();…
new一个对象的时候要用到构造函数, 例如Hello hello = new Hello();这时调用的是Hello的无参数构造方法; Hello hello = new Hello("hi");这个是调用Hello有参数构造方法, 在JAVA中如果不写构造方法的话,会默认加上一个无参数的构造方法,但是如果已经有了一个有参数的构造方法,那么无参数的构造方法就不会默认被加上. 如果Hello类中已经有了一个有参数的构造方法,这时再使用Hello hello = new Hello();来…