• 多态,虚方法重写,抽象类,接口


    简而言之就是龙生九子,各有不同

    有了继承,才有了多态

    1、虚方法 virtual
    重写 override

    父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写

    子类重写父类的方法使用的是override关键字

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 多态
    {
        public    class fengji:fly
        {
            public override string Fling()
        {
             return "喷火就能飞";
        } 
        
    
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 多态
    {
        public    class fly
        {
            /// <summary>
            /// 拍拍翅膀就能飞
            /// </summary>
            /// <returns></returns>
            public virtual string Fling()
            {
                return "拍拍翅膀就能飞!!!";
            }
    
        }
    }

    2、抽象类
    是因为普通的多态虚方法没有人用本身的方法主体,那么不如只建立方法框架,继承后自己写方法

    抽象类就是专门当父类的,abstract
    抽象类中可以有抽象方法:abstract
    抽象方法一定在抽象类中,但是抽象类中不一定只有抽象方法,也可以有普通方法

    在一个类的前面加上关键字“abstract”此类就成了抽象类。

    abstract class Man
        {
            public  void shuohua()
            {
                Console.WriteLine("会英语");
            }
        }

    抽象类,不可以作为一个对象来使用。(无法New)一般用它来引用子类对象,

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 抽象类
    {
        public abstract class Fly
        {
            public abstract string Fling();
    
            public string Eat()
            {
                return "吃小米";
            }
    
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 抽象类
    {
        public class Bird : Fly
        {
            public override string Fling()
            {
                return "拍拍翅膀就能飞!!";
            }
    
    
        }
    }

    抽象方法:

    在一个方法前 加上关键字“abstract”此类就成了抽象方法。

    public abstract void shuohua()

    当一个类中继承的是抽象类时,必须要把方法重写。(override  关键字),

    public override void shuohua()
            {
                Console.WriteLine("会英语");
            }

    子类中必须全部实现抽象类父类中的所有抽象方法。

    抽象方法必须在抽象类中。抽象类中可以出现其他方法,但是抽象方法必须在抽象类中。

    抽象类中的普通方法,只能在当前类中 使用。

    抽象类只可以作为一个父类来使用,不能创建对象。

    抽象属性:

    只能在 抽象类中使用。

    接口:

    接口关键字  interface

    右键--添加--添加新建项--选择接口

    3、接口
    1、吃饭,睡觉 - 基础类
    2、技能,地点 - 赚钱类
    3、娱乐1,娱乐2 - 娱乐类

    接口就是出来做 干爹的,接口不是类 interface
    编写方法格式: string 方法名();
    实现接口的方法 不要override,直接正常编写就可以了  接口不是类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                nanren nr = new nanren();
                Console.WriteLine(nr.chifan());
            }
        }
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        public abstract    class jichu
        {
            public abstract string chifan();
    
            public abstract string shuijiao();
        }
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        interface zhuanqian
        {
             string jineng();
    
             string didian();
    
        }
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        interface yule
        {
    
             string yule1();
        }
    }

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        class nanren : jichu ,zhuanqian,yule
        {
            public override string chifan()
            {
                return "大口吃饭";
            }
            public override string shuijiao()
            {
                return "趴着睡";
            }
            public string jineng()
            {
                return "敲代码";
            }
            public string didian()
            {
    
                return "白宫";
            }
    
            public string yule1()
            {
    
                return "LOL";
            }
    
        }
    }

  • 相关阅读:
    Node.js v0.10.1 稳定版发布
    PHP 5.5.0 Alpha6 发布
    DataNucleus Access Platform 3.2 正式版发布
    Swipe 2.0 发布,移动端滑动 JS 库
    Kamailio 4.0 发布,开源的SIP服务器
    PeerJS 0.1.7:一个用于浏览器内P2P的WebRTC封装器
    Apache Libcloud 0.12.3 发布
    IE 10将加强对Flash的支持
    JBoss Portlet Bridge 3.2.0.Beta2 发布
    如何在遗留代码基础上开发
  • 原文地址:https://www.cnblogs.com/1030351096zzz/p/6106745.html
Copyright © 2020-2023  润新知