一. 继承 多态
package dsj03
object class03 {
class Fruit() {
def eat():Unit= {
println("吃掉果皮 中间的不能吃")
}
}
class Watermelon extends Fruit {
override def eat(): Unit = {
println("削皮 中间的好吃")
}
}
def main(args: Array[String]): Unit = {
/`test` 方法参数类型为父类 `Fruit`,但实际调用时传入的是子类对象(`Apple` 或 `Watermelon`)
def test(fruit: Fruit):Unit = {
fruit.eat()
}
class Apple extends Fruit {
override def eat(): Unit = {
println("洗干净 直接吃")
}
}
val a1 = new Apple()
test(a1)
val w1 = new Watermelon()
test(w1)
}
}
二.构造器
package dsj03
object class04 {
class Father() {
println("Fater 的构造器...")
}
class Son extends Father(){
println("Son 的构造器...")
}
def main(args: Array[String]): Unit = {
new Son()
}
}
package dsj03
object class05 {
class Animal (var name:String,var age:Int) {
println(s"父类的构造器被调用...${name},${age}")
def say():Unit = {
println(s"Animal ${name},${age}")
}
}
class Dog(name:String,age:Int,var color:String) extends Animal(name,age){
println(s"子类的构造器被调用...${name},${age},${color}")
override def say():Unit = {
super.say()
println(s"狗狗... 我的颜色是${color}")
}
}
def main(args: Array[String]): Unit = {
val d1 = new Dog("旺财",1,"黑色")
d1.say()
}
}
