黑马程序员_接口的学习

namespace ConApp_接口
{
    /*
       接口和抽象类的区别:
     * 抽象类不仅可以定义许多的抽象成员来为所有的派生类型提供接口,还可以定义许多构造函数,字段,属性,非抽象的成员(也就是带有实现的)
     * 接口只能包含抽象成员
     * 抽象类不允许类的多重继承(在大型的项目当中,很少使用抽象类作为公共成员的基类,不支持多重继承使其派生类只能继承该类)
     * 抽象类的派生类必须实现抽象父类中的每一个抽象成员
     *
     * 接口不能继承自类,但可以继承自接口
     * 接口中的成员不指定访问修饰符(默认的接口成员的访问修饰符都是隐士公共抽象的)
     * 接口中不能有字段
     * 接口中不能有构造函数
     * 接口不能提供实现
     * 接口中可以定义属性
     * 无法创建抽象类或接口的实例
     */
    class Program
    {
        static void Main(string[] args)
        {
            SubClass ss = new SubClass();
            Console.ReadKey();
        }
    }
    public interface ICase_1 //接口使用Interface关键字,接口是引用类型
    {
        void Remove();
    }

    public interface ICase_2
    { 
        
    }
    class Case_1
    {
        public int bb { get; set; }
    }
    public class SubClass : ICase_1//类可以继承自接口,接口不能继承自类,继承自接口的派生类必须实现接口中的所有成员
    {
        public void Remove()
        {
            
        }
    }

    public interface Interface_1 : ICase_1, ICase_2//接口支持多重继承
    { 
        
    }

    /*
       判断一个类型是否指定一个接口的方式:
     * 通过显示转换来实现,为了避免异常的情况出现,和try{}catch{}异常处理语句结合使用
     * 如果一个对象已被视为一个指定的接口,我们还可以通过使用as关键字来指向该对象接口的引用。否则就会返回一个值为null的引用。因此在这种情况我们转换后需要对转换结果进行空值判断
     * 对于 is关键的使用 可以 来直接判断该对象是否符合指定接口 ,然后返回一个bool类型的结果
     */
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值