从编译的角度解释Scala的多态含义:在执行期间而非编译期间确定所引用对象的类型,根据实际类型调用其方法。一个编译型语言有两种类型,分别为编译类型和运行类型。程序中定义的引用变量所指向的具体类型和通过该变量发出的方法调用在编译时不确定,而是在程序运行期间才确定的。
Scala
class Animal(){
var name=""
def run():Unit={
println("animal run.....")
}
}
//继承
//1.不劳而获
class Dog extends Aniaml(){
//重写父类方法
override def run():Unit={
println("dog is running...")
}
}
class Cat extends Aniaml(){
override def run():Unit={
println("cay is running...")
}
}
object bbb {
def main(args: Array[String]): Unit = {
val d1=new Dog()
val c1=new Cat()
run(d1)
run(c1)
}
def run(obj:Aniaml):Unit={
obj.run()
}
}