Skip to Content
Head First Kotlin程序设计
book

Head First Kotlin程序设计

by Dawn Griffiths, David Griffiths
August 2020
Intermediate to advanced
483 pages
11h 24m
Chinese
China Machine Press
Content preview from Head First Kotlin程序设计
138
5
overriding functions
如何覆盖方法
你可以使用与覆盖属性相类似的方式覆盖方法:在子类中添加该
方法以及override前缀。
在本例中,我们希望在Hippo子类中覆盖makeNoiseeat方法,
以便它们可以执行Hippo特有操作。代码如下:
class Hippo : Animal() {
override val image = "hippo.jpg"
override val food = "grass"
override val habitat = "water"
override fun makeNoise() {
println("Grunt! Grunt!")
}
override fun eat() {
println("The Hippo is eating $food")
}
}
覆盖方法的规则
覆盖方法时,你必须遵守如下两大规则:
子类中的方法参数必须与父类中的一致
例如,父类中的某个方法有三个Int类型的参数,那么子类中覆盖
的方法也必须有三个Int参数,否则代码将无法通过编译。
¥
方法的返回类型必须是兼容的
无论父类方法定义了什么返回类型,覆盖的方法必须返回相同的类
型,或是其子类型。子类型只会做任何父类定义的事情,因此返回一
个父类预期的子类是安全的。
¥
在以上Hippo代码中,我们覆盖的方法没有参数和返回值。这与父
类中定义的方法相一致,它们遵守了覆盖方法的规则。
Animal
image
food
habitat
hunger
makeNoise() ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

面向对象的思考过程(原书第5版)

面向对象的思考过程(原书第5版)

马特 魏斯费尔德
GraphQL 学习指南

GraphQL 学习指南

Eve Porcello, Alex Banks
前端架构设计

前端架构设计

Micah Godbolt

Publisher Resources

ISBN: 9787111662358