与类名放在一起的(方法)是默认构造器
class SparkContext(config: SparkConf) extends Logging with ExecutorAllocationClient {
...
def this() = this(new SparkConf())
}
java中构造方法:
class Person(name String,age Int){
this.name=name;
this.age=age;
}
scala> ///
scala> class Person(newName : String){ --本身看作构造方法
| var name = "Flink"
| var age = 10
| this.name = newName
| def this() = this(name) --接收0个参数
| def this(name : String,age : Int){ --接收2个参数
| this(name)
| this.age = age
| }
| }
defined class Person
scala> val p1 = new Person
p1: Person = Person@5a4b4bf3
scala> val p2 = new Person("Spark")
p2: Person = Person@47aa6f0b
scala> val p3 = new Person("Scala",3)
p3: Person = Person@5101d32a
scala> p1.name
res117: String = Flink
scala> p2.name
res118: String = Spark
scala> p3.name + p3.age
res119: String = Scala3
-------------------------------------------------------
scala> class Person(newName : String){
| var name = "Flink"
| var age = 10
| this.name = newName
| }
defined class Person
scala> val p1 = new Person --参数不够
<console>:17: error: not enough arguments for constructor Person: (newName: String)Person.
Unspecified value parameter newName.
val p1 = new Person
^
scala> val p2 = new Person("Spark")
p2: Person = Person@41124730
scala> val p3 = new Person("Scala",3) --参数太多
<console>:17: error: too many arguments for constructor Person: (newName: String)Person
val p3 = new Person("Scala",3)
^
------------------------------------------------
scala> class Person(newName : String){
| var name = "Flink"
| var age = 10
| this.name = newName
| println("hello...")
| }
defined class Person
scala> val p2 = new Person("Spark")
hello... --初始化的时候就执行,后面不会执行
p2: Person = Person@336d1321
scala> p2.name
res130: String = Spark
scala 构造方法(默认构造器)
最新推荐文章于 2023-05-07 08:06:23 发布