scala 继承 extends
覆盖使用 override
调用父类 super
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Person
{
var name="tom"
def getName= name
}
class Student extends Person {
var score = 0
def getScore = score
override def getName = "-----"+ super.getName
}
// Exiting paste mode, now interpreting.
defined class Person
defined class Student
scala> val s = new Student()
s: Student = Student@69cd1085
scala> s.getName
res0: String = -----tom
----------------------------------
isInstanceOf and asInstanceOf
scala> class Person
defined class Person
scala> class Student extends Person
defined class Student
scala> val p : Person = new Student()
p: Person = Student@29c1249a
scala> var s:Student = null
s: Student = null
scala> if( p.isInstanceOf[Student]) s= p.asInstanceOf[Student]
scala> s
res3: Student = Student@29c1249a
----------------------------------
scala> class Person
defined class Person
scala> class Student extends Person
defined class Student
scala> val p2:Person = new Student()
p2: Person = Student@3b32f0b4
scala> val p2:Person = new Student()
p2: Person = Student@3b32f0b4
scala> p2.isInstanceOf[Student]
res6: Boolean = true
scala> p2.getClass == classOf[Student]
res7: Boolean = true
--------- 注意这里的 false --------- 注意这里和 isInstanceOf 的区别
scala> p2.getClass == classOf[Person]
res8: Boolean = false
scala> p2.isInstanceOf[Person]
res9: Boolean = true
----------------------------------
使用模式匹配进行类型判断
scala> p2 match {
| case per: Person => println("is person ")
| case _ =>println("other class ") }
is person
---------------------------------