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

推荐订阅源

N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
Google Online Security Blog
Google Online Security Blog
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 热门话题
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
D
Docker
C
Cyber Attacks, Cyber Crime and Cyber Security
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
T
Tenable Blog
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
The Hacker News
The Hacker News
Project Zero
Project Zero
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
Jina AI
Jina AI
Cyberwarzone
Cyberwarzone
The Register - Security
The Register - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Scott Helme
Scott Helme
A
About on SuperTechFans
WordPress大学
WordPress大学
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
G
GRAHAM CLULEY
Latest news
Latest news
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

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

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

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