标签:
定义类
class HiScala {
private var name = "Spark"
def sayName(){println(name)}
def getName=name
}
实例化类
scala> val scal = new HiScala
scal: HiScala = HiScala@769d96e0
调用类的方法
scala> scal.sayName()
Spark
scala> scal.getName
res6: String = Spark
class HiScala {
var name = "Scala"
def sayName(){println(name)}
def getName=name
}
访问public的getter,setter
scala> println(scal.name)
Scala
scala> scal.name
res9: String = Scala
重写默认的getter和setter 注意_=连在一起的
class Person {
private var myName = "Flink"
def name = this.myName
def name_=(newName : String){
myName=newName
println("Hi: " + myName)
}
}
scala> rocky.name
res10: String = Flink
scala> rocky.name="Spark"
Hi: Spark
rocky.name: String = Spark
private[this]修饰时代表为类私有,对象私有,只能被类的对象使用,不能被当前类的方法使用
class Person {
private var myName = "Flink"
def name = this.myName
def name_=(newName : String){
myName=newName
println("Hi: " + myName)
}
def talk(p: Person) = {
println("Hello "+p.name)
}
}
val p1 = new Person
val p2 = new Person
p2.name="Spark"
scala> p1.talk(p2)
Hello Spark
但是如下修改后,name不是Person的成员,只能是这个对象访问
class Person {
private[this] var name = "Flink"
def talk(p: Person) = {
println("Hello "+p.name)
}
}
private[package-name] ...
即package-name包中的所有类和对象都可以访问private后面的成员。
构造函数
class Person {
var name = "Flink"
var age = 18
def this(name:String){
this()
this.name=name
}
def this(name:String,age:Int){
this(name)
this.age=age
}
}
与类名放在一起的是默认构造器,如class SparkContext(config: SparkConf)
class Person {
println("Big Data") //默认构造器会把所有没有放在方法的代码块进行执行
var name = "Flink"
var age = 18
def this(name:String){
this()
this.name=name
}
def this(name:String,age:Int){
this(name)
this.age=age
}
}
scala> val p = new Person("Spark",20)
Big Data
p: Person = Person@10dafee8
object伴生对象,必须在同一个文件中
class Person {
var name = "Flink"
var age = 18
def this(name:String){
this()
this.name=name
}
def this(name:String,age:Int){
this(name)
this.age=age
}
}
//用于存放常量和静态方法
object Person {
println("Scala") //只调用一次
var salary = 0.0
def getSalary = salary
}
scala> Person.getSalary
Scala
res16: Double = 0.0
scala> Person.getSalary
res17: Double = 0.0
抽象类abstract class
接口trait
作业:自己分析SparkContext和RDD这两个类
标签:
原文地址:http://www.cnblogs.com/jkge/p/5119581.html