理解构造器
2025-09-2916阅读2分钟
一、解读构造器
构造器是一个函数,在new的时候,被自动调用,它的作用是实例化对象。
new Class() 就是在调用构造器,或者叫调用构造函数。
二、案例
求三角形的面积
object test30 {
class Triangle(a: Double, b: Double, c: Double) {
def getArea(): Double= {
if (check()) {
var s = (a + b + c) / 2
s = s * (s - a) * (s - b) * (s - c)
return Math.sqrt(s) //Math.sqrt(4) →2 就是开平方操作
}else{
print("不能构成三角形")
return 0;
}
}
//检查是否能构成三角形
def check():Boolean={
//任意两边之和大于第三遍
return (a+b)>c && (a+c)>b &&(b+c)>a
}
}
def main(args: Array[String]): Unit = {
//Triangle表示一个三角形类。
//Triangle(边长1,边长2,边长3)
val t1=new Triangle(3,4,5)
println(t1.getArea())
val t2=new Triangle(1,1,4)
println(t2.getArea())
}
}
构造器的用法
object test31 {
//可以在两个地方写属性
//1.构造器的参数列表
//2.构造器内部
//构造器的参数列表:
//1.val 表示不可以被修改的属性
//2.var 表示可以被修改的属性
//3.没有修饰,不是对象的属性,无法访问
class Triangle(val a:Double,var b:Double,var c:Double) {
val d:Int=1
var e:Int=2
}
def main(args: Array[String]): Unit = {
val t=new Triangle(1,2,3)
t.b=2
}
}
主、辅构造器
object test32 {
/*
写多个构造器
主构造器:一个,就是class
辅构造器:多个,名称就是this
构造器的作用:生产对象
支持多种创建对象的方式 ====在网站在注册用户是,可以有多种注册方式:手机号,微信号,邮箱号
*/
class User(val phone:String,var pwd:String) {
var email:String=""
var name:String=""
//辅构造器
def this(email:String,name:String,pwd:String){
this("",pwd)
this.name=name
this.email=email
}
//辅构造器
def this(email:String,name:String,pwd:String,phone:String){
//调用一次主构造器
this(phone,pwd)
//再对其他的属性赋值
this.name=name
this.email=email
}
def say():Unit={
println(s"我的信息如下:")
println(s"姓名:${name}")
println(s"手机号:${phone}")
println(s"邮箱:${email}")
println(s"密码:${pwd}")
}
}
def main(args: Array[String]): Unit = {
var u1=new User("13617891234","123456")
u1.say()
var u2=new User("12345@qq.com","小花","12456")
u2.say()
var u3=new User("12345@qq.com","小花","12456","13617891234")
u3.say()
//辅构造器
}
}