继承的基本概念
在原有类的基础上定义一个新类,原有类称为父类,新类称为子类。
- 父类(Superclass) :被继承的原有类(Scala 中所有类默认继承
AnyRef,对应 Java 的Object)。 - 子类(Subclass) :继承父类的新类,会获得父类的非私有属性和方法。
- 继承关键字:
extends
基本代码:
/**
* 1. 类和对象(一个类,多个对象)
* 2. new
* 3. 构造函数,构造器
* 4. 辅助构造器
* 5. private,override,toString,equals,this
* 6. apply 单例模式
* 7. 伴生类 伴生对象
* --------------------------------------------------------------
* 8. 多个类
* 9. 继承
* class 子类 extends 父类
*/
object class11 {
//动物
class Aniaml() {
def eat():Unit={
println("animal eat....")
}
}
class Dog() extends Aniaml() {
}
def main(args: Array[String]): Unit = {
val d1=new Dog
d1.eat()
}
}
好处:不劳而获。 子类可以直接使用父类的属性和方法
基本代码:
object class12 {
//动物
class Aniaml() {
def eat():Unit={
println("animal eat....")
}
def run():Unit={
println("animal run....")
}
}
//狗
class Dog() extends Aniaml() {
}
def main(args: Array[String]): Unit = {
val d1=new Dog
d1.eat()
d1.run()
}
}
继承方法重写
super.run 在子类中,调用父类的方法
基本代码:
/**
* 11. 子类对父类方法的 重写
* 在子类中,通过override 覆盖(重写) 父类的同名方法
* 12. super. 在子类中访问父类
*/
object class13 {
class Parent() {
val name:String=""
def run():Unit={
println("run....")
}
}
class Son extends Parent(){
//如果希望对父类的方法进行改进:觉得不好
override def run():Unit={
super.run() //super.run 在子类中,调用父类的方法
println("开自动驾驶的车 run....")
}
}
def main(args: Array[String]): Unit = {
val s1=new Son()
s1.run()
}
}
scala中的继承与多态
面向对象编程的三大特征:封装,继承,多态
基本代码:
package level02
/** 1.类和对象(一个类,多个对象)
* 2.new
* 3.构造函数 - 构造器
* 4.辅助构造器
* 5.继承 extends
*6. override 重写方法,toString, equals, this
* 7.伴生类 伴生对象
*8. 多个子类
* 9.抽象类
* 10.父类:不允许被 new 但是可以被继承可以有具体的属性和方法
*11.子类和父类的方法的 重写
*12.在子类中,通过 override 覆盖(重写)父类的同名方法
* 13.super,访问子类中的父类
*14.面向对象编程的三大特征:封装,____继承____,____多态____
*
*/
object class05 {
//动物
class Fruit() {
def eat():Unit={
println("eat....")
}
}
class Apple extends Fruit() {
override def eat():Unit={
println("吃掉果皮,,中间的不能吃.......")
}
}
class Watermelon extends Fruit{
override def eat():Unit={
println("削皮,中间的最好吃")
}
}
def main(args: Array[String]): Unit = {
//
def test(fruit: Fruit):Unit={
fruit.eat()
}
val a1=new Apple()
test(a1)//传入子类
val w1=new Watermelon()
test(w1)
}
}