一、很多人分不清方法的重载和方法的覆写
覆写:override是重写父类已经存在的方法
重载:Overloads是写一个与已经存在的方法的方法名相同的方法,已经存在的这个方法可以是从父类继承的,也可以是当前类已经存在的。简单说:名称相同、参数名不同的方法。
二、看一个方法重载的例子
package net.println.kotlin.chapter4
import java.util.ArrayList
/**
* @author:wangdong
* @description:方法重载
*/
class Overloads{
//方法名相同,参数不同
//返回值不能当区分方法是否相同
//默认参数0
//给java用的话,加
@JvmOverloads
fun a(int: Int = 0):Int{
return int
}
fun a(string: String):Int{
return string.length
}
}
fun main(args: Array<String>) {
val overloads = Overloads()
val int: Int = overloads.a()
val integerList = ArrayList<Int>()
integerList.add(23)
integerList.add(233)
integerList.add(243)
integerList.add(235)
integerList.add(5)
integerList.add(50)
integerList.add(500)
println(integerList)
//可以有效避免java中的bug
//removeAt对应的是索引
integerList.removeAt(1)
//remove对应的是list的元素是5
integerList.remove(5)
println(integerList)
}
AI 代码解读
三、看一个方法覆写的例子
package net.println.kotlin.chapter4
/**
* @author:wangdong
* @description:
*/
/**
* 一个类想要被继承,必须先open
* 一个方法想要被覆写,也必须先open
* open class Person{
* open fun work()
}
*/
/**定义一个人的抽象类*/
abstract class Person(open val age: Int){
abstract fun work()
}
/**定义一个工程师的类,继承人的抽象类*/
class engineer(age: Int): Person(age){
override val age: Int
get() = 0
//覆写方法一定要加override关键字
override fun work() {
println("我在写代码")
}
}
/**定义一个医生的类,继承人的抽象类*/
class doctor(age: Int): Person(age){
override fun work() {
println("我在给病人做手术")
}
}
fun main(args: Array<String>) {
val engineer = engineer(23)
engineer.work()
println("工程师" + engineer.age)
val doctor = doctor(45)
doctor.work()
println("医生" + doctor.age)
}
AI 代码解读