构造器是一个函数,在new的时候,被自动调用,它的作用是实例化对象。
new Class() 就是在调用构造器,或者叫调用构造函数。 构造器的作用:生产对象
三角形判断及面积计算
object basic29 {
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 && (c+b)>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 basic30 {
//可以在两个地方写属性
//1.构造器的参数内部】
//2.构造器内部
//构造器的参数列表
//1.val 表示不可以被修改的属性
//2.var 表示可以被修改的属性
//3.没有修饰符,不是对象的属性,无法访问
class Triangle(val a:Double,var b:Double,c:Double) {
val d:Int = 1
val e:Int = 2
}
def main(args: Array[String]): Unit = {
val t =new Triangle(1,2,3)
t.b=2
//t.c无法访问
}
}
object basic31 {
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("2345678","32444")
u1.say()
var u2= new User("23678","32444")
u2.say()
var u3= new User("2345678","32444")
u3.say()
}
}