2020-12-16
主構造器
package cn.doit.com.day03.demo2
//跟在類名的後面,跟類交織在一起,叫主造器 主構造會執行類定義中的所有語句
// 用val和var修飾的構造器引數,會成為這個類的成員變數 預設val修飾 會成為類的成員變數
class Student(val name:String , var age:Int) {
val i = 100
//程式碼塊
{
try {
println("hi ketty")
} catch {
case e: Exception => //可以進行try catch
} finally {}
}
def m():Unit={
println("hello world")
}
var j:Int = _ //給指定的型別的變數賦予預設值
Student.sayHi()
}
object Student {
private def sayHi(): Unit ={
println("hi tom")
}
def main(args: Array[String]): Unit = {
val s = new Student
println(s)
}
}
輔助構造器
package cn.doit.com.day03.demo3
//在主構造器中傳遞的引數可以用val var修飾
class Boy(val name: String , val age: Int) {
var sal: Double = _ //對應型別變數的的預設初始值
var gender:String = _
/*
定義輔助構造器,輔助構造器一定要用def this,輔助構造器一定要呼叫
主構造器或其他的輔助構造器
輔助構造器的方法中的引數不用加var val修飾
構造器方法一定是this
*/
def this(name:String, age:Int, sal:Double){
this(name ,age)
this.sal = sal
}
def this(name:String ,age:Int ,sal:Double ,gender:String){
//呼叫了輔助構造器 相當於間接呼叫了主構造
this(name,age,sal)
this.gender = gender
}
}
//不用 var val修飾只是形參
class Boy2(name: String , age: Int){
}
//name weight子類可以繼承 private private[this]繼承不了 height只是個形參
class Boy3(val name:String , private var age:Int , private[this] val weight:Double , height:Double = 165.0){
}
object Boy {
def main(args: Array[String]): Unit = {
val b = new Boy("tom", 18, 12000.0)
println(b.sal)
}
}