scala的类的主构造器

类的构造器
当创建类对象的时候,会自动调用类的构造器。之前使用的都是默认构造器,我们接下来要学习如何自定义构造器。
主构造器
我们学习过,Java的构造器,有构造列表和构造代码块
java class Person { // 成员变量 private String name; private Integer age; // Java构造器 public Person(String name, Integer age) { // 初始化成员变量 this.name = name; this.age = age; } }
在scala中,我们可以使用更简洁的语法来实现。
语法
scala class 类名(var/val 参数名:类型 = 默认值, var/val 参数名:类型 = 默认值){ // 构造代码块 }
主构造器的参数列表是直接定义在类名后面,添加了val/var表示直接通过主构造器定义成员变量
构造器参数列表可以指定默认值
创建实例,调用构造器可以指定字段进行初始化
整个class中除了字段定义和方法定义的代码都是构造代码

示例
定义一个Person类,通过主构造器参数列表定义姓名和年龄字段,并且设置它们的默认值
在主构造器中输出"调用主构造器"
创建"张三"对象(姓名为张三,年龄为20),打印对象的姓名和年龄
创建"空"对象,不给构造器传入任何的参数,打印对象的姓名和年龄
创建"man40"对象,不传入姓名参数,指定年龄为40,打印对象的姓名和年龄
参考代码
scala object _06ConstructorDemo { // 定义类的主构造器 // 指定默认值 class Person(var name:String = "", var age:Int = 0) { println("调用主构造器") } def main(args: Array[String]): Unit = { // 给构造器传入参数 val zhangsan = new Person("张三", 20) println(zhangsan.name) println(zhangsan.age) println("---") // 不传入任何参数 val empty = new Person println(empty.name) println(empty.age) println("---") // 指定字段进行初始化 val man40 = new Person(age = 40) println(man40.name) println(man40.age) } }
在这里插入图片描述
答案
在这里插入图片描述

发布了139 篇原创文章 · 获赞 333 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/qq_45765882/article/details/104302225