接口

using System;

// 接口用关键字interface来声明
// 接口的命名规范: 以大写字母I作为开头
public interface IUSB {
    // 接口中定义了一系列的方法
    // 接口中的方法不能有访问权限,也不能有方法体
    // 接口中的方法其实不是抽象方法
    void Charge();
    void TransportData();

    // 接口中还可以写访问器,要求实现类必须提供这个访问器,并且提供set和get方法
    int Price { set; get; } 
    string Color { set; }
    // string Kind { get; }
}

public interface ILighting {
    void StartLighting();
    void Charge();
}

public class Hardware {
    public string name;
    public void Charge() { }
}

// 一个接口做完后,需要有类来实现这个接口,否则没有意义
// 如果一个类实现了一个接口,那么这个类是这个接口的实现类
// 一个类在实现了一个接口的同时,要实现这个接口中所有的方法
// 继承和实现接口的语法是一样的
// 如果一个类在继承了一个父类的同时还实现了接口,那么父类必须放在接口的前面
public class Mouse : Hardware, IUSB, ILighting {
    // 实现接口中所有的方法
    // 实现接口方法的时候,一定是public权限
    // 接口方法不是抽象方法,不能用override去重写
    public void TransportData() { }
    public void StartLighting() { }

    public int Price {
        set {
        }
        get {
            return 1;
        }
    }

    public string Color {
        set { }
        get { return ""; }
    }

    // public void Charge() { }
/* 如果实现的多个接口中有相同的方法,理论上实现一次就可以了
 * 但是如果需要不同的实现,可以采用下列方式
    void USB.Charge() { }
    void Lighting.Charge() { }
 */

    // 还可以写自己的成员
    public void Show() { }
}


// 抽象类实现接口
public abstract class KeyBoard : IUSB {
    // 必须实现接口中方法 -> 接口中的方法不是抽象方法
    public virtual void Charge() { }
    // 可以把接口中的方法实现为抽象方法
    public abstract void TransportData();
}

public class ShuangFeiyan : KeyBoard {
    public override void TransportData() {
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值