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

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - 得易失易积薄不宏

axios调用webapi报错 MySql重装以后,修改数据库路径,打开以前的数据库报Table 'XX库.XX表' doesn't exist错误的解决办法 SqlServer2012,设置指定数据库对指定用户开放权限 win10无法访问服务器上的共享文件夹怎么设置,提示:你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问 Vs2017的git的坑 jira6.3.6创建问题不自动发邮件通知的问题 在windows下面配置redis集群遇到的一些坑 SqlServer2008 无法修改表,超时时间已到 在操作完成之前超时解决方法 .Net MVC HTTP 错误 404.0 - Not Found 解决方法 新建mvc项目iis报404错误! 怎么在本地调试其他机器网站执行代码 今天2003的iis 始终无法访问。net2.0的项目,原来是web服务扩展没有2.0的扩展 下面是加上的方法 .net 查询excel记录为空的解决办法 - 得易失易积薄不宏 - 博客园 最近想写一个bs结构的后台权限控制 http/1.1 forbidden 问题方法 winfrom DataGridView 关闭自动创建列 .net 操作Access的一个奇怪的问题 目前我见过的.net开源的或者免费的比较好的资源 对于三层结构运用ActiveRecord的感想
一个有趣的C#面试题 - 得易失易积薄不宏 - 博客园
得易失易积薄不宏 · 2008-01-02 · via 博客园 - 得易失易积薄不宏

一次面试 做了一道题
内容如下
这道题是这样的 有四个类

public class ClassA
 
{
        
public virtual void print()
        
{
            Console.WriteLine(
"My ClassA");
        }

 }


public class ClassB:ClassA
 




public class ClassC:ClassB
 
{
        
public virtual void print()
        
{
            Console.WriteLine(
"My ClassC");
        }


 }




public class ClassD:ClassC
 
{
         
public override void print()
        
{
            Console.WriteLine(
"My ClassD");
        }

 }

调用

  ClassC Obj1=new ClassD();
            Obj1.print();

           ClassB Obj2
=new ClassD();
           Obj2.print();

            ClassA Obj3
=new ClassD();
            Obj3.print();

结果
My ClassD
My ClassB
My ClassB

前两个结果好理解

但是第三个结果

ClassA Obj3=new ClassD();
 Obj3.print();
My ClassB

为什么会这个样子 ?
翻了好多资料,
忽然想起里好几个月前曾经看过一篇文章:
<<我是谁>>

http://allenlooplee.cnblogs.com/archive/2005/11/24/283578.html
于是找出来 又仔细看了一下  突然感觉自己大约可能理解了
ClassA Obj3=new ClassD();
这句代码 是声明一个受ClassA特征约束的ClassD对象 也就是说ClassA对Obj3屏蔽了除ClassA以外的特征(描述的不太准确 )
而ClassD 继承了类 C->B->A 
这样 ClassD 本身的Print方法是不会被调用的  C的也不会调用 为什么会调用B的  而不调用A的呢?
我的理解是 B的方法 重写了A的方法   也就是说 B的Print 能够通过A的特征约束.  而Obj3 是D的对象,  D又继承C, C继承B ,所以, D也具有B的特征! 调用优先级应该是从子类到基类, 也就是说D大于C C大于B B大于A,  而D 和C 都因为没有重写A的方法,肯定通不过 A的特征约束  所以  
ClassA Obj3=new ClassD();
 Obj3.print();

必定会输出
 My ClassB

不过目前 这些都是我自己个人理解   希望高手能指出我的理解错误 和不对的地方