scala学习手记13 - 类继承
2024-10-21 17:27:38
在scala里,类继承有两点限制:
- 重写方法需要使用override关键字;
- 只有主构造函数才能往父类构造函数中传参数。
在java1.5中引入了override注解,但不强制使用。不过在scala中要想重写方法必须使用override关键字。如果确实重写了父类的方法又不使用override关键字的话,则会在编译时报错,提示没有使用override修饰符。
scala的副构造函数必须调用主构造函数或是另一个副构造函数。只有在主构造函数中才能向父类的构造函数中传递数据。可以看出来主构造函数如同父类和子类中间的一道关卡:它既负责完成子类的初始化,也负责与父类的沟通。
下面的这段代码演示了下上述内容:
class Vehicle(val id: Int, val year: Int) {
override def toString(): String = "ID: " + id + " Year: " + year
} class Car(override val id: Int, override val year: Int, var fuelLevel: Int) extends Vehicle(id, year) {
override def toString(): String = super.toString() + " Fuel Level: " + fuelLevel
} val car = new Car(1, 2009, 100)
println (car)
在代码中定义了两个类:Vehicle和Car。Car继承了Vehicle。在继承的时候,因为要向父类传递参数,所以Car类主构造函数的一部分必须能匹配父类的构造函数。因为Car类构造函数中的id和year两个成员变量源自父类Vehicle,所以需要使用override关键字修饰。此外,因为这两个类都重写了java.lang.Object的toString方法,所以重写的方法前面需要使用override关键字修饰。
看一下执行结果:
就这样!
###########
最新文章
- CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换
- 教你怎么半天搞定Docker
- python 之 Django 小案例
- 一个奇葩的SQL
- UISegmentedControl 控件
- 一个用shell写的统计目录下统计文件行数的代码
- [HDOJ5445]Food Problem(优先队列优化多重背包)
- Docker安装RStudio
- Ubuntu中查看32还是64
- Xutils请求服务器json数据与下载文件
- codevs 1128 导弹拦截 (贪心)
- NodeJs简单七行爬虫--爬取自己Qzone的说说并存入数据库
- 学习pthreads,给线程传递多个參数
- mysql 表级锁
- PDF解决方案(2)--文件转PDF
- jquery与js的区别与基础操作
- 结合java.util.TreeMap源码理解红黑树
- Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署
- cuda 配置要点
- 11-30 js高级
热门文章
- python框架Scrapy中crawlSpider的使用
- Centos6.5 DNS配置
- buffer/interger overflow /return-to-libc攻击实验
- submit按钮修改宽高的坑
- IIS网站部署解决报错
- 【我的Android进阶之旅】Android使用getIdentifier()方法根据资源名来获取资源id
- 用python合并N个不同字符集编码的sql文件的实践
- 【Oracle】OGG数据初始化之RMAN
- 基于视觉反馈的步进电机X-Y平台控制
- Open Source VOIP applications, both clients and servers (开源sip server &; sip client 和开发库)