C#接口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
 * C#接口
 * 概念:接口就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合,一个接口定义了一个协议,接口可以包含方法、自动属性、事件(方法)和索引;
 * 作用:
 * 起到一个约束的作用,继承自接口的类必须实现接口的方法,这样便于更好的管理代码,避免遗漏;
 * 定义:
 * interface 接口关键字
 * public interface IDog
 * {  }
 * 注意接口的命名规则+帕斯卡命名法定义的接口名
 * 特点:
 * 1.接口不能被实例化;
 * 2.接口只能包含方法声明;
 * 3.接口的成员包括方法、属性、索引器、事件(方法);
 * 4.接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员;
 * 5.接口中的所有成员默认为公开成员,因此接口中不能有修饰符;
 * 6.派生类必须实现接口的所有成员;
 * 接口与抽象类的共同点:
 * 1.都可以被继承;
 * 2.都不能被直接实例化;
 * 3.都可以包含方法声明,都没有方法体;
 * 4.派生类必须实现未实现的方法;
 * 接口与抽象类的区别:
 * 1.抽象基类可以定义字段、属性、方法实现;接口只能定义属性、索引器、事件和方法声明,不能包含字段;
 * 2.抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范;
 * 3.接口可以继承多个,抽象类只能继承一个;
 * 4.抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中;
 * 5.接口基本上不具备继承的任何特点,它仅仅承诺了能够调用的方法;
 * 6.如果抽象类实现接口,则可以把接口中的方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法;
 * 
 * 
 * 隐式公共方法:默认为公开的
 * 接口可以包含方法、属性、事件和索引
 * 一个借口定义了一个协议
 * 
 * 接口的作用:起到一个约束的作用,继承自接口的类
 * 
 * 接口的关键词:interface
 * public interface IDog{}默认为public
 * 命名规则:I+帕斯卡命名
 * 
 * 接口不能加private,都默认为公开,不能加任何修饰符
 * 接口不能有方法体{},以分号结尾
 * 
 * 接口不能被实例化
 * 
 * class Dog : Animal,IDog,IBlack//接口类可以有多个
 * 
 * 多态的三种表现:1、虚方法  2、抽象  3、接口
 * 注意:抽象方法没有方法体;抽象类无法实例化
 *  * interface 接口名关键字
 * 大写字母I开头
 */
namespace ConsoleApplication10
{
    class Program
    {
        static void Main(string[] args)
        {
            IBind b = new Student();//里式转换
            b.Jiao();
            Student student = new Student();
            student.Run();
            student.Jiao();
            //1.父类可以接受子类
            Person p = new Student();//这样可以说是父类装载这子类
            p.Run();
            //2.如果父类里面装载的是子类,那么就可以把父类强制转换为子类
            Student s1 = (Student)p;//强制转换
            s1.Study();//父类不能调用子类的成员,子类可以调用父类的成员(私有除外)
            Console.ReadKey();
        }
    }
    class Person
    {
        public void Run()
        {
            Console.WriteLine("正在跑步");
        }
    }
    interface IBind
    {
        //接口里面的方法不允许用访问修饰符修饰,默认就是public
        //接口里面的方法不能有方法体(抽象类(abstract)也不能有方法体)
        //接口里面不能包含字段
        //private string name;
        void Jiao();//不能有方法体(花括号)
        string Name
        {
            get;//以分号结尾
            set;//注意这不是属性
        }
    }
 /*
 * C#只能实现单继承,那么如果想实现多继承怎么办
 * 接口
 * ALT+shift+F10创建接口
 * 注意:接口里面的必须全部实现
 */
    class Student : Person, IBind//接口不能继承类,接口只能继承接口,类可以继承接口,也可以继承类,//接口类可以有多个父类
    {
        public void Jiao()//要与接口里面的完全一致,前面加上public公开的
        {
            Console.WriteLine("叫声比鸟叫的都好听");
        }
        public string Name
        {
            get { return Name; }
            set { }
        }
        public void Study()
        {
            Console.WriteLine("在学习");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值