scala構築方法(デフォルトコンストラクタ)
2137 ワード
( )
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 --
: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) --
: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