Scala编程详解 第14讲-Scala编程详解:面向对象编程之继承 共13页.pptx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
【课程大纲】 第1讲-Spark的前世今生 共12页 第2讲-课程介绍、特色与价值 共13页 第3讲-Scala编程详解:基础语法 共8页 第4讲-Scala编程详解:条件控制与循环 共7页 第5讲-Scala编程详解:函数入门 共5页 第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、ArrayBuffer以及遍历数组 共7页 第10讲-Scala编程详解:数组操作之数组转换 共5页 第11讲-Scala编程详解:Map与Tuple 共8页 第12讲-Scala编程详解:面向对象编程之类 共12页 第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-Scala编程详解:函数式编程 共14页 第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor入门 共8页 Scala是一种强大的多范式编程语言,它在大数据领域中尤其受欢迎,因为它提供了高效的数据处理能力和对并发编程的良好支持。在Scala编程中,面向对象编程是一个核心概念,而继承是实现这一概念的关键机制。 继承允许子类从父类中继承属性(fields)和行为(methods),从而实现代码的重用。在Scala中,子类通过`extends`关键字来继承父类。例如,`class Student extends Person`表示`Student`类继承自`Person`类。这样,`Student`不仅获得了`Person`的所有字段和方法,还可以添加自己的字段和方法。 Scala的继承支持字段和方法的覆盖。要覆盖父类的非抽象方法,子类需要使用`override`关键字。这有助于编译器检查子类是否正确覆盖了父类的方法,如错误的签名或参数。例如: ```scala class Person { private var name = "leo" def getName = name } class Student extends Person { private var score = "A" override def getName = "Hi, I'm " + super.getName } ``` 在这里,`Student`覆盖了`getName`方法,并通过`super.getName`调用了父类的原始实现。 `override`关键字同样可以用于覆盖父类的`val`字段,同时覆盖其对应的getter方法。例如: ```scala class Person { val name: String = "Person" def age: Int = 0 } class Student extends Person { override val name: String = "leo" override val age: Int = 30 } ``` 在类型转换方面,Scala提供了`isInstanceOf`和`asInstanceOf`。`isInstanceOf`用来检查对象是否是特定类或其子类的实例,而`asInstanceOf`则用于强制类型转换。然而,不推荐在没有先验证`isInstanceOf`的情况下直接使用`asInstanceOf`,因为这可能导致运行时的ClassCastException。例如: ```scala class Person class Student extends Person val p: Person = new Student var s: Student = null if (p.isInstanceOf[Student]) s = p.asInstanceOf[Student] ``` 在某些情况下,需要更精确的类型判断,可以使用`getClass`和`classOf`。`getClass`返回对象的实际类,`classOf`则用于获取类的引用,它们可以用`==`比较以判断对象是否属于特定类: ```scala class Person class Student extends Person val p: Person = new Student p.isInstanceOf[Person] p.getClass == classOf[Person] p.getClass == classOf[Student] ``` 在实际开发中,特别是像Spark这样的大数据框架,模式匹配常用于类型判断,它提供了简洁且可扩展的代码结构。虽然模式匹配在功能上类似于`isInstanceOf`,但其主要目的是匹配特定的模式,而不是进行严格的类型检查。 总结来说,Scala的继承机制、字段和方法覆盖、类型转换以及类型判断是其面向对象编程的重要组成部分,它们帮助开发者构建复杂且可扩展的软件系统。在Scala中,这些概念与函数式编程相结合,使得编写高性能、易维护的大数据应用成为可能。
剩余12页未读,继续阅读
- 粉丝: 458
- 资源: 7362
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助