• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
疯丫头0805
博客园    首页    新随笔    联系   管理    订阅  订阅
多态、虚方法、重写

多态:

同样都是继承了同一个父类,但是父类中的方法并不使用任何一个子类,那么在这就需要子类重新编写这个方法的主体

1、需要父类同意子类可以重新编写自己的方法,virtual - 虚方法

2、子类只能重写父类允许重写的方法,只能重写虚方法,override - 重写覆盖虚方法

所有的类都可以当做父类,都可以有虚方法

Program   类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 多态_虚方法_重写
{
    class Program
    {
        static void Main(string[] args)
        {
            bird b = new bird();
            plane p = new plane();
            Console.WriteLine(b.flying());
            Console.WriteLine(p.flying());


            Class1 c = new Class1();
            Console.WriteLine(c.flying());
            Console.WriteLine(c.eat());


            Console.ReadLine();
        }
    }
}

fly   类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 多态_虚方法_重写
{
    public class fly
    {
        //public string flying()//这样写的父类被子类继承后有可能不符合所有子类各自的特性,所以要改成虚拟的
        //{
        //    return "我会飞行!";
        //}
        public virtual string flying()//在public后面加上virtual就变成虚拟的,如果不符合个别子类的特性,可以再子类里面进行重写
        {
            return "我会飞行!";
        }
        public virtual string head()
        {
            return "我有头!";
        }
        public virtual string wing()
        {
            return "我有翅膀!";
        }

    }
}

bird   类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 多态_虚方法_重写
{
    public class bird:fly
    {
        public override string flying()//override是重写覆盖,打出来后自动提示需要更改的内容,回车自动显示,然后把ruturn的内容改成其他内容即可
        {
            return "我拍拍翅膀就能飞!";
        }
        public virtual string eat()//自己独有的特性也可以被写成虚方法,它派生的类继承后也可以进行重写
        {
            return "我吃小米!";
        }

    }
}

plan   类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 多态_虚方法_重写
{
    class plane:fly
    {
        public override string flying()
        {
            return "我喷火就能飞!";
        }

    }
}

class1   类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 多态_虚方法_重写
{
    public class Class1 : bird//Class1继承bird这个子类为父类,那么Class1也可以在里面继续重写,最顶端的虚方法可以被下面的派生类无限重写
    {
        public override string flying()
        {
            return "我不拍翅膀也能飞!";
        }

        public override string eat()
        {
            return "我吃小米,也吃沙子!";
        }

    }
}

 

posted on 2016-09-10 15:39  疯丫头0805  阅读(305)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3