Kotlin方法重载和覆写

本文通过具体的Kotlin示例介绍了方法重载与方法覆写的区别。详细解释了如何在Kotlin中实现方法的重载及覆写,并展示了实际应用。

一、很多人分不清方法的重载和方法的覆写
覆写: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)
}

三、看一个方法覆写的例子

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)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值