惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Cisco Talos Blog
Cisco Talos Blog
C
Check Point Blog
博客园_首页
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Martin Fowler
Martin Fowler
Recorded Future
Recorded Future
S
Security @ Cisco Blogs
L
LINUX DO - 最新话题
博客园 - 司徒正美
P
Privacy International News Feed
G
Google Developers Blog
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Scott Helme
Scott Helme
K
Kaspersky official blog
I
InfoQ
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Webroot Blog
Webroot Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
大猫的无限游戏
大猫的无限游戏
D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
量子位
H
Hacker News: Front Page
Simon Willison's Weblog
Simon Willison's Weblog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
SecWiki News
SecWiki News
S
Security Affairs
Latest news
Latest news
人人都是产品经理
人人都是产品经理
C
CERT Recently Published Vulnerability Notes
S
Security Archives - TechRepublic
V
Visual Studio Blog
T
Troy Hunt's Blog
S
Secure Thoughts
F
Fortinet All Blogs
V
V2EX
The Register - Security
The Register - Security
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - 左少白

oracle 找回DROP掉的表 求解,工作流点通过时,弹出窗口让用户录入审核意见 oracle 游标 sqlserver 按五分钟分组 c# 继承 查询行转列 SqlParameter序列化的问题 oracle oracle trunc (date,dd )函数 oracle 游标 对象集合转换为datatable - 左少白 用C# 正则 提取HTML标签中的值? oracle decode 与 case when ,空的处理 oracle select for update sql1 同期进度,完成率 Oracle Index 相關知識 玩转DevExpress.XtraGrid.view.gridview oracle索引 在Oracle中进行大小写不敏感的查询2 - 左少白
c# 多态
左少白 · 2012-04-18 · via 博客园 - 左少白

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleExample

{

    class 哥

    {

        public virtual void draw()

        {

            Console.WriteLine("哥来做事,你们可以偷偷乐了");

        }

        public void ff()

        { 

            Console.WriteLine("哥的FF方法");

        }

    }

    class 小弟 : 哥

    {

        public override void draw()

        {

            Console.WriteLine("小弟不用哥的,小弟要单干");

            //base.draw();

        }

        public new void ff()

        {

            Console.WriteLine("小第的FF方法");

        }

    }

    class 小妹 : 哥

    {

        public new void ff()

        {

            Console.WriteLine("小妹的FF方法");

        }

    }

}

 public static void Main()

  { 

           哥[] father = new 哥[3];

            father[0] = new 哥();

            father[1] = new 小弟();

            father[2] = new 小妹();

            foreach (哥 t in father)

            {

                t.draw();    //调用实际的重写对象的方法(子类里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)           

            }

            小弟 tt = new 小弟();

            tt.draw();      //调用实际的重写对象的方法(子类里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)

            tt.ff();        //调用本类的方法(小第里面的方法)

            哥 bb = tt;

            bb.draw();      //调用实际的重写对象的方法(子类里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)

            bb.ff();        //调用本类的方法 (哥里的方法)

            哥 cc = new 小妹();

            cc.draw();      //调用实际的重写对象的方法(子类里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)

            cc.ff();        //本类的方法(哥里的方法,是非虚方法) 

            哥 gg = new 小弟();

            ((小弟)gg).draw();//调用实际的重写对象的方法(类小弟里面,如果override 了draw方法,调用它,没有就调用父类的draw方法)

            ((小弟)gg).ff();  //类小弟的方法(base里的方法)

 }

结果如下: