C#Interface 接口、接口的特点、接口的用法、多态性、部分类、密封类、ToString()重载

接口就是一种规范,当一个类中继承一个类外,还需要继承其他类时,由于类继承的单一性,这时候需要使用接口来继承其他成员。

1、接口中的成员不允许有访问访问修饰符,默认为public

2、不允许写具有方法体的函数

3、不允许包含字段(接口不是用来存储数据的)

4、只允许有方法、自动属性(get set没有方法体)、索引器(本质都是方法)

5、只有一个类继承了接口,这个类必须要实现接口中的成员

6、接口不能被实例化,抽象类也不可以被实例化,静态类也不可以被实例化;但是可以把继承它的对象赋值给接口。

7、不允许有构造函数

8、接口与接口之间可以继承,并且可以多继承,类之间的继承只有单一性

9、类可以继承接口,接口不可以继承类;

10、子类继承了父类和接口,语法上将父类写在前面,基类写在接口前


接口定义形式:

public  interface  IFUMable   // 访问修饰符,接口关键字,接口名(以I 开头,以able结尾)
{
    void show();
}

    自动属性:(缺点是没法进行限定),作用效果跟属性差不多;
   public    string Pro
        {
            get;
            set;
        }

下面程序中方法名不规范,应该首字母大写

    //实现接口的方法,不需要加override;实现虚方法和abstract方法都需要加override
        static void Main(string[] args)
        {
            Inwordable word=new teachar1();       // 两种方法都可以访问,声明接口或者类都可以
            word.word();

            teachar1 te = new teachar1();
            te.word();
            Console.ReadKey();
        }
        public  class teacher
        { 
         private string _job;      
        }
        public  class teachar1:teacher,Inwordable     // 必须要实现其中的方法成员,不需要override
        {
           public   void word()
          {
               Console.WriteLine ("The class of teacher1");
           }
           public string str2()
            {//    必须要加访问限定符,对于接口的方法要实现,不需要加override
               Console.WriteLine ("实现接口的方法,不需要加override;实现虚方法和abstract方法都需要加override");
            }
        }
        public interface Inwordable 
       {
            void word();    // 接口中的方法不可以有访问修饰符
            string str2();
        }

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

    //如果在一个继承了接口的类中,接口和类都有一个相同的方法;必须要实现接口的方法,需要加上接口的名字,显示实现接口方法;
    //在声明的接口中,调用接口的方法;声明的类中,实现类中自己定义的方法。

    class Program
    {
        static void Main(string[] args)
        {
            // 分别声明了一个接口和一个类,由于已经显示的重载了方法,所以各自运行各自的方法
            Inwordable word = new teachar1();
            word.word();

            teachar1 te = new teachar1();
            te.word();
            Console.ReadKey();
        }
    }
    public class teachar1 : Inwordable
    {
        void Inwordable.word()//这里是为了实现接口的方法,而不是继承接口的方法,所以不用写override;但是要显示实现接口方法,加上接口的名字
        {
            Console.WriteLine("这个方法是显示实现接口的,为了解决重名问题");
        }
        public void word()
        {
            Console.WriteLine("这个是类中自己的方法");
        }
    }


     public interface Inwordable
    {
        void word();    // 接口中的方法不可以有访问修饰符

    }



-------------------------------------------------------------------------------------------------------

多态性:

虚方法:父类需要创建对象,有自己的实现

抽象类:父类不需要有自己的实现

接口: 无父类关系,不是继承关系


小鸟会飞,小狗不会飞,小飞虫会飞:

这时候采用那哪种方式实现多态呢: 假设有一个父类,小鸟??但是有的会飞,有的不会飞,方法不一样;

假设抽象类,父类就不可以被实例化,不满足

所以只能采用接口,各有各的实现方法。


部分类

// 下面是两个部分类,都是teacher类中的一部分;两个的资源共享,可以相互访问,包括private成员。

其中不可以写相同名的方法和成员,但是可以重载,用法跟同一个类中相同。

        public parital class teacher
        { 
           privte string _job;      
        }
        public parital class teachar
        {
           public void show()
           {
               Console.WriteLine ("这两个partial类共同构成了一个类,可以共享");
           }
        }


密封类:不可以被继承,可以继承其他类

    public sealed class student
    {
        public void show()
        {
            Console.WriteLine("seal 表示一个密封类,不可以被继承");
        }
    }


对对象打印.ToString() 打印出来的为命名空间

ToString()

object.To.String() 这个是父类的方法,子类可以调用。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一枚努力的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值