您的位置:首页 > 移动开发 > Objective-C

object对象、伴生类与伴生对象与类的继承实战

2016-02-27 13:19 429 查看

场景

object对象的作用、伴生类与伴生对象、类的继承语法

实验

package com.scode.scala
/**
* author: Ivy Peng
* function: object对象、伴生类与伴生对象、类的继承
* date:2016/02/27 12.43
* sum:object对象中的方法与变量都是静态的
* 1、伴生类与伴生对象
* 语法 :object <name1> ;object <name2> 其中 name1=name2
* 性质:伴生类可以访问伴生对象的所有成员方法与属性-包括私有成员
*
* 2、apply在伴生类与伴生对象中的使用方法
* 伴生类中使用 语法:var varName = new ClassName varName()
* 伴生对象中使用 语法 :
* var varName = ObjectName()
* 在ObjectName中的apply方法中返回ClassName实例
*
* 3、类的继承与方法变量的重写
* 规范:在变量与方法前面加  override 关键字
*
* 执行结果:
* I'm into scala so much!
try your best,just relax !
I'm into Spark so much!
()
School:Spark
salary:9500
I'm a worker 8 hours
*/
class ApplyTest
{
//伴生类中可以访问伴生对象的所有成员
val id = ApplyTest.newStudentNo
private var number =ApplyTest.studentNo

def apply()=println("I'm into Spark so much!")
def haveAtry()
{
println("try your best,just relax !")
}
}
object ApplyTest
{
private var studentNo=0
private def newStudentNo=
{
studentNo+=1
studentNo
}
def apply()=
{
println("I'm into scala so much!")
new ApplyTest
}
}
class Person2(val name:String,val age:Int)
{
val school = "CS"
def sleep = "8 hours"
override def toString = "I'm a Person2"
}
class Worker(name:String,age:Int,val salary:Long) extends Person2(name,age)
{
override val school = "Spark"
override def toString = "I'm a worker "+super.sleep
}

object ObjectOps
{
def main(args:Array[String])=
{
//apply在对象中的使用方式
val a = ApplyTest()//注:(隐性)调用伴生对象的apply方法生成类的实例,不用申明new关键字
a.haveAtry()

//apply在类中的使用方式
val app = new ApplyTest
println(app())

//类的继承
val worker = new Worker("ivy",27,9500)
println("School:"+worker.school)
println("salary:"+worker.salary)
println(worker.toString())
}
}


参考文献

scala 深入浅出实战经典 . 王家林
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: