kotlin抽象类,接口,继承

接口:是一种约定.没有状态,专门用于别人继承. interface

抽象类:实现了一部分约定协议的半成品,可有状态,可有方法实现,也是专门用于别人继承,abstract class

抽象类只能单继承,接口可多继承

继承,父类需要open才能被子类继承,父类里面得方法,属性定义为open ,才能被override,复写父类的方法和属性必须加override

package com.testinterface

/**
 * Created by jingwen on 19/4/16.
 */
interface InputDevice {
    fun Input(device:Any)
}

interface UsbInputDevice:InputDevice
interface BleInputDevice:InputDevice

interface OpticalMouse
abstract class UsbMouse (var name:String):UsbInputDevice,OpticalMouse{
    override fun Input(device: Any) {
        println("UsbMouse input")
    }

    override fun toString(): String {
        return name
    }


}

class LogiMouse( name: String):UsbMouse(name){
    override fun Input(device: Any) {
        super.Input(device)
    }
}

class Computer{

    fun addUsbInputDevice(device:UsbInputDevice){
        println("add usb inputdevice $device")
    }

    fun addBleInputDevice(device:BleInputDevice){
        println("add ble inputdevice $device")
    }

    fun addInputDevice(device:InputDevice){
        println("add input device $device")
        when(device){
            is  UsbInputDevice -> {
                addUsbInputDevice(device)
            }
            is BleInputDevice ->{
                addBleInputDevice(device)
            }
            else -> {
                println("给我一个非输入设备")
            }
        }
    }
}

fun main(args: Array<String>) {
    var computer:Computer = Computer()
    var mouse = LogiMouse("罗技鼠标")
    computer.addInputDevice(mouse)
}

输出结果:

add input device 罗技鼠标
add usb inputdevice 罗技鼠标

Process finished with exit code 0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值