• Csharp多态的实现(接口)


    1.什么是接口

    接口可以看做是一个标准, 所有继承的子类需要按照接口中声明的方法来

    接口用关键字 interface 修饰,接口的名字一般是I.........able ,表示我有什么能力

    接口一般是在命名空间下的,也就是说跟类是在同一级别的  (接口也可以放在类里面,但是没有什么意义,因为可以把接口看做是一个特殊的类,类是解决方法,接口也是,所以放在里面没什么屌意思)

    接口里面的方法,属性不能用public,private等修饰

    接口里面的方法不实现,只声明,真正的实现是在继承的子类中实现

    接口里面只能放属性,方法,不能放字段

    当然,这些都可以在代码中观察出来

    2.接下来用代码来实现多态,然后观察一下,有什么特点

    //首先在命名空间下面声明一个接口
    interface Ianimalable
        {
          //接口里面不能有字段,可以有方法,有自然属性
           void say();
           string name
           {
               get;
               set;
           }
        }
    
    
    interface Ipersonable
        {
            void hisay();
        }
    
    //一个接口可以同时继承多个接口    
    interface Istudentable : Ianimalable,Ipersonable
        {
            void HIsay();
        }
    
    
    //在命名空间下面定义一个鹦鹉类,继承与接口
     class Parrot:Ianimalable
        {
            private string _name;
            public string name
            {
                get
                {
                    return _name;
                }
                set
                {
                    _name = value;
                }
            }
    //下面是显式接口的调用方法,用下面的格式写方法体
    // 返回值 接口名.函数名(){方法体};
            void Ianimalable.say ()
            {
                Console.WriteLine("我是一个鹦鹉,我叫{0}", name);
            }
        }
    
    //在命名空间下面定义一个狗类,继承与接口
     class Dog:Ianimalable
        {
            private string _name;
            public string name
            {
                get
                {
                    return _name;
                }
                set
                {
                    _name = value;
                }
            }
            public void say()
            {
                Console.WriteLine("我是一个狗,我叫{0}", _name);
            }

    定义一个接口变量,比如说 Ianimalable animal = new Parrot();     animal = new Dog();        

    这里可以看到,接口就像一个特殊的类, 接口不是被实例化,但是可以通过子类间接实例化                

    2.1 当继承接口的子类中的方法名和接口中的方法名一样的话,这就需要用到显示接口,这个在代码中可以看到具体的使用方法

    2.2 一个接口可以被多个接口或者多个类继承, 一个接口可以同时继承多个接口继承, 但是一个类不能同时继承多个类,  一个接口可以同时继承类和接口, 但是接口一定要在后面

    2.3 animal先装的是鹦鹉类,animal后来装的是狗类,装那个类,就表现出那个类的特征

    2.4 这样接口就表现了不同的形态,可以是狗类,可以是鹦鹉类等等, 就实现了多态

    Csharp多态的实现概述

  • 相关阅读:
    js --- for in 和 for of
    vue -- config index.js 配置文件详解
    vue -- 脚手架之webpack.dev.conf.js
    vue --- 解读vue的中webpack.base.config.js
    vue 引入第三方字体包
    js call 和 apply
    vue2.0中的$router 和 $route的区别
    懒加载js实现和优化
    vue的指令在webstrom下报错
    BFC的布局规则和触发条件
  • 原文地址:https://www.cnblogs.com/ZhiXing-Blogs/p/4958240.html
Copyright © 2020-2023  润新知