Spark之Scala学习之路(二)

创建类:

class Hiscala{
  private var name="Spark"   //私有化无法直接访问
  def sayName() {println(name)}
  def getName=name
}

val scal=new Hiscala
scal.getName()
scal.getName  //没有传参数可以去掉括号

class Person{
  private var myName="Flink"
  def name=this.myName      //类似get
  def name_=(newName : String){ //类似重写 name_=  set方法
    myName=newName
    println("Hi:" +myName)
  }
}

class Person{
  private var myName="Flink"
  def name=this.myName
  def update(newName : String){        //直接使用方法
    myName=newName
    println("Hi:" +myName)
  }
}

val rock=new Person
rock.update("Hadoop")

class Person{
  private var myName="Flink"
  def name=this.myName
  def update(newName : String){
    myName=newName
    println("Hi:" +myName)
  }
  def talk(p:Person)={
    println("Hello"+p.name)
  }
}
val p1=new Person
val p2=new Person
p2.update("Spark")
p1.talk(p2)

private[this] 不想被其他的变量使用,内中的方法也无法访问private[this]中是成员

class Person{
  private[this] var name="Flink"
  def update(newName : String){
    println("Hi:")
  }
  def talk(p:Person)={
    println("Hello"+p.name) //name 不是talk的实例成员 会报错
  }
}

类的构造器:

class Person{
  var name="Flink"
  var age=10
  def update(newName : String){
    println("Hi:")
  }
  def talk(p:Person)={
    println("Hello"+p.name)
  }
  def this(name:String){
    this()     //所有重载构造器首先要调用默认构造器或其他重载的构造器
    this.name=name
  }
  def this(name:String,age:Int){
    this(name)     //所有重载构造器首先要调用默认构造器或其他重载的构造器
    this.age=age
  }
}
val p1=new Person("Spark",5)

伴生对象object
一般 定义类之后定义一个同名的object,存放静态成员、方法 必须在同个文件

object只会在第一次调用时执行

object Person{
  println("Scala")   //object里面有默认的构造器 只会在第一次调用时执行
  var salary=0.0
  def getSalary=salary
}
Person.getSalary    //Scala 0.0
Person.getSalary    //0.0

伴生对象中有apply方法 工厂方法模式

val array=Array(1,2,3) 就是调用下面的方法
val array=Array.apply(1,2,3) //会调用伴生对象的方法,基本不用new

override 关键字 覆写父类方法(抽象方法必须使用,非抽象也建议使用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值