面向对象基础指数(7)抽象类 接口


今天给大家带来了抽象类与接口、正所谓不懂得抽象的程序员不完全算是程序员



抽象类


           一句话抽象类就是类的抽象

     打个比方吧、下面有这么几个类        小猫类    小狗类      鸟类      鱼类

           这四个类肯定有一些共同的方法、如吃饭、睡觉、打豆豆、额?打豆豆?!打豆豆不算啊!好吧、反正就是有共同点对吧!

         那我们就给这四个类抽象一下、抽象出来的类就是动物类、这四个都是动物类的、类是对对象的抽象、而抽象类就是类的抽象、简单的理解就是比类大一级、抽象类只能被继承、因为抽象类没有具体的方法实现、他只是类的一个抽象、实现一个小猫类、喵一只猫出来了、实现一个动物类?哥请教我实例化一只动物……动物只是对大多数生物类的一些共同点的抽象、抽象类- - 、哎呀妈呀‘类’似我了……


抽象类写法


动物类(抽象类)


           


猫类(继承抽象方法的子类)


           

 


全部代码


abstract  class 动物
    {
         protected abstract void  吃饭();
         protected abstract void 睡觉();
         protected abstract void 打豆豆();

    }

    class 小猫:动物 
    {
        public override void 吃饭()
        {
            Console.WriteLine("小猫吃饭");
        }

        public override void 睡觉()
        {
            Console.WriteLine("小猫睡觉哦");
        }

        public override void 吃饭()
        {
            Console.WriteLine("喵O~哀家不会打豆豆");
        }
    }
    class 小狗 : 动物
    {
        public override void 吃饭()
        {
            Console.WriteLine("小狗吃饭");
        }

        public override void 睡觉()
        {
            Console.WriteLine("小狗睡觉……旺旺");
        }

        public override void 吃饭()
        {
            Console.WriteLine("旺旺O~打豆豆 旺旺");
        }
    }

    //鸟类鱼类代码类似这就不显示了



抽象类特征


           1.抽象类不能被实例化

           抽象类是不能有具体的方法的、他的抽象方法都是子类来实现的、所以抽象方法不能实例化、亲!你想想、实例化一个猫类是只猫、实例化动物类是什么???什么都说不是- - 


           2 写抽象类必须写抽象方法、一个抽象方法、必须是在抽象类里面的、但是一个抽象类、可以不写抽象方法。


           3 不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承


           4 继承抽象类的子类要实现抽象类的所有抽象方法


认识抽象类

           提供一个继承的出发点、当设计一个抽象类时、一定是用来继承的、所以在一个以继承关系形成的等级结构里、树叶应当是具体类、而树枝节点军事抽象类。抽象类


         


——————————————抽象类就是类的抽象!!!!



接口


           接口其实也是类、叫做接口类、接口的里面那是慢慢爱、这些爱就是一些没有具体是实现的方法、接口就是对方法的抽象、接口就是为解决一件具体的事情而生的、那接口里的方法是抽象方法?NO~不是抽象方法、因为他没有abstract 修饰符= =。


认识接口


         1 接口类里写了特定的功能、但是不写实现方法、功能的实现由实现接口的子类去完成(接口声明不包括数据成员,只能包含方法、属性、事件、索引等成员


         2 因为接口没有方法的具体实现、没有任何成员的执行方式、所以不能实例化、不能有构造方法和字段、不能有修饰符。


         3 接口是用来被子类继承实现的、子类实现接口、必须实现接口的所有方法、属性


         4 C#没有多跟继承、通过接口能实现多继承、也就是实现多个接口、一个类可以实现多个接口、一个接口也可以被多个类实现。


         5 接口类命名首字母必须是I


说了这几条估计你就迷糊了、其实很简单、咱们看个实例


         上面说了小猫不会打豆豆、但是主人一时兴起、教了小猫学会了打豆豆!我们现在加一个打豆豆的接口、让小猫实现打豆豆的功能这样小猫就会打豆豆了、用接口可以规范打豆豆的方法、如果小狗以后也学会了打豆豆、那小狗实现这个接口就好啦、这样就很好的实现了扩展、而没有修改原先的代码、有了接口的规定框架、打豆豆的方法也不会少写、下面就让我们看下小猫是怎么学会-  -打豆豆的吧!


           


具体代码


    interface I打豆豆接口//打豆豆的接口
    {
        string 打豆豆(string thing);//没有具体实现的方法
    }


    class 小猫 :I打豆豆接口 //小猫类实现打豆豆的接口
    {
     
        public string 打豆豆(string thing)//实现接口的方法
        {
            return "我刚刚学会打豆豆";//具体方法
        }
    }


…………吃饭、睡觉、打豆豆!


抽象方法与接口的异同点


           哎呦!抽象方法和接口太像了、都没具体实现方法、都不能实例化、那我们会搞混的、下面就让大家明白小抽跟小接的相同和不同点  = =那个点啊……


相同点

         1 都是面向抽象的

                                           2 都不可以实例化

                                                                       3 都有无具体实现的方法

                                                                                                          4 都可以被继承

不同点


         1 抽象类是对对象的抽象、而接口是对方法的抽象


         2 抽象类可以给出一些成员的实现、接口却不包含任何成员的实现方法


         3 抽象类可以被子类部分实现、接口必须被子类全部实现


         4 一个子类只能集成一个抽象类、但是可以实现多个接口


         5 从设计角度说、抽象类是从类中抽象公共的东西、泛化出父类、然后让子类继承、接口是不知道子类的存在、方法如何实现不确认、预先定义。


         6 接口命名前面必须加 I 而抽象类不用、关键字也不一样。


抽象方法与接口的使用


         如果行为跨越不同的类、可以使用接口;对于一些相似的类对象、用继承抽象类



—————————吃饭、睡觉、打豆豆、豆豆?豆豆到底是谁?!———————————

————chenchen————





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值