zoukankan      html  css  js  c++  java
  • 面向对象——多态

    多态:

    龙生九子,各有不同

    有了继承,才有了多态

    1、虚方法 virtual
    重写 override

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

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

    父类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 多态
    {
        public class Fly
        {
            public virtual string Fling()
            {
                return "拍拍翅膀就能飞!!!";
            }
        }
    }

    子类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 多态
    {
        public class Plane:Fly
        {
            public override string Fling()
            {
                return "喷火就能飞!!!";
            }
        }
    }

    2、抽象类
    是因为普通的多态虚方法没有人用本身的方法主体,那么...

    抽象类就是来当亲爹,abstract
    抽象类中可以有抽象方法:abstract
    抽象方法一定在抽象类中,但是抽象类中不一定只有抽象方法,也可以有普通方法

    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 "拍拍翅膀就能飞!!";
            }
    
    
        }
    }

    3、接口

    假设人为一个对象

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

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

    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";
            }
    
    
        }
    }
  • 相关阅读:
    云计算解决方案百度文库
    【QA5】【mysql问题】ERROR 1045 (28000): Access denied for...
    linux系统管理 简单常用命令
    【QA4】【sudoers问题解决】(*** is not in the sudoers file.This incident will be reported)
    自动化测试框架实践1autotest
    Syndication命名空间实现RSS功能学习
    Javascript中撤销方法
    asp.net 中一次性更新所有GRIDVIEW的记录(转)
    Oralce 一次执行多条语句
    asp.net 防注入式攻击
  • 原文地址:https://www.cnblogs.com/jiuban2391/p/6106599.html
Copyright © 2011-2022 走看看