构造方法

scala构造方法分为两类,主构造方法和辅助构造方法
scala构建对象可以通过辅助构造方法创建,但必须调用主构造方法
scala是完全面向函数得语言,所以类也是函数
类是函数,可以添加小括号,添加参数列表
类所代表得函数其实就是这个类得构造方法
默认情况下,scala也是给类提供无参构造方法,所以()可以省略
类后面声明得构造方法就是主构造方法,主构造方法中声明得构造方法就是辅助构造方法
package chapter02

//scala构造方法分为两类,主构造方法和辅助构造方法
//scala构建对象可以通过辅助构造方法创建,但必须调用主构造方法
//scala是完全面向函数得语言,所以类也是函数
//类是函数,可以添加小括号,添加参数列表
//类所代表得函数其实就是这个类得构造方法
//默认情况下,scala也是给类提供无参构造方法,所以()可以省略
//类后面声明得构造方法就是主构造方法,主构造方法中声明得构造方法就是辅助构造方法
//


object test08 {

  def main(args:Array[String]):Unit={
    var user=new User09()
    println(user)
  }

}


class User09(s:String){
  println("主构造方法")
  println(s)

  //声明辅助构造方法时用this
  def this(s:String,s2:String){
    this(s)
    println("主构造方法2")
  }

  //TODO 构造方法调用其他构造方法时,被调用的构造方法已经申明
  def this(){
    this("主构造方法1","xxxxxx")
  }
}

 

package chapter02

/*

class A{
 //父类构造方法无参
 public A(){}

}

class B extends A{
   public B{
     super()调用父类的构造方法
   }
   }
 */

object test08 {

  def main(args:Array[String]):Unit={

    val user=new User08("zhangshan")

  }

}


class Person08(){
  println("Person08 主构造方法")

}

//父类主构造方法没有参数
class User08() extends Person08 {
  println("User08 主构造方法")

  def this(s:String){
    this()
    println("User08 辅助构造方法")
  }

}
package chapter02



/*

class A{
//父类构造方法有参
 public A(String s){}
}

class B1 extends A{
   public B1{
     super("xxxx")显示调用父类的构造方法
   }
   }

class B2 extends A{
   public B2(String:s){
     super(s)显示调用父类的构造方法
   }
   }


 */

object test10 {

  def main(args:Array[String]):Unit={

    val user=new User10("user li")

    val user2=new User11()

  }

}

class Person10(s:String){
  println("Person10 主构造方法 = "+s)

}

//父类主构造方法有参数,必须显示的传递参数
//可以在继承的父类传递参数
class User10() extends Person10("person zhang") {
  println("User10 主构造方法")

  def this(s:String){
    this()
    println("User10 辅助构造方法 = "+s)
  }

}

/*
Person10 主构造方法 = person zhang
User10 主构造方法
User10 辅助构造方法 = user li
 */

class User11(s:String) extends Person10(s) {
  println("User11 主构造方法 = "+s)

  def this(){
    this("user zhao")
    println("User11 辅助构造方法")
  }

}

/*
Person10 主构造方法 = user zhao
User11 主构造方法 = user zhao
User11 辅助构造方法
 */

 

package chapter02


//构造方法参数
object test11 {

  def main(args:Array[String]):Unit={
    var user=new User2("zhang")
    println(user.name)
  }

}
//类构造方法的参数作用域默认为整个类的主体,但是想要参数作为属性来使用,需要采用特殊方式 var
class User2(var name:String){

}

 

posted on 2020-08-05 17:19  happygril3  阅读(145)  评论(0)    收藏  举报

导航