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

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
T
Troy Hunt's Blog
L
Lohrmann on Cybersecurity
S
Schneier on Security
Spread Privacy
Spread Privacy
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
GRAHAM CLULEY
博客园 - 【当耐特】
有赞技术团队
有赞技术团队
SecWiki News
SecWiki News
博客园 - 叶小钗
博客园 - Franky
V
Vulnerabilities – Threatpost
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
O
OpenAI News
小众软件
小众软件
V
V2EX
N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
博客园 - 三生石上(FineUI控件)
The Hacker News
The Hacker News
Project Zero
Project Zero
The Last Watchdog
The Last Watchdog
雷峰网
雷峰网
Google Online Security Blog
Google Online Security Blog
T
Tailwind CSS Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
量子位
D
Docker
Recent Announcements
Recent Announcements
T
Threat Research - Cisco Blogs
P
Privacy International News Feed
爱范儿
爱范儿
PCI Perspectives
PCI Perspectives
Jina AI
Jina AI
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
V2EX - 技术
V2EX - 技术
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The Register - Security
The Register - Security
T
The Blog of Author Tim Ferriss
博客园 - 聂微东
Cloudbric
Cloudbric
S
Security Affairs
F
Fortinet All Blogs

博客园 - 寸芒

[原创]作业:家庭消费管理程序,一点代码 [原创]JScript学习摘要1 [随]程序设计模式的有趣解释-追MM [随]SQL Server 和ACCESS 、EXCEL 的数据转换 [原创]treeview简单根据数据库的数据,显示多级节点 [随]测试了下我的Blog价值(汗颜了) [随]C#轻松解决世纪迷题 [随]下了个windows live write 来玩玩 [随] 网站注册随机码的实现 [随]存储过程入门与提高 [原创]涂鸦事件 [随]c#.net常用函数和方法 [原创]浅要分析委托和事件 [原创]readonly 和const分析 [随]抽象基类与接口,共性与个性的选择 [原创]Box and Unbox [随]c#连接数据库 [随]八荣八耻 [原创]引用类型的转换之感想
[原创]到底调用哪个方法
寸芒 · 2007-08-11 · via 博客园 - 寸芒

这么个程序:
using System;
namespace ConsoleApplication1
{
    
//基类,就一个虚函数
    class clsA
    {
        
public virtual void app(int a)
        { }
    }
    
//继承类
    class clsB : clsA
    {
        
public override void app(int a)
        {
            Console.WriteLine(
"调用int的!");
        }
        
public void app(double a)
        {
            Console.WriteLine(
"调用double的!");
        }
    }
    
class Program
    {
        
static void Main(string[] args)
        {
            clsB b 
= new clsB();
            b.app(
5);
        }
    }
}
    在主函数里 b.app(
5),是调用参数int类型的,还是double类型的?!在这里,运行的是参数为double的!
有的人说,把double类型的方法和int类型的方法改下,但是,改下也是运行public 
void app(//)。
    我找了下资料:
    其实,在这里有个概念就是:利用 
override 和 new 关键词重写基类的方法的,在派生类看来,不是属于它
本身的,只是对基类方法的新的实现。在本例子中,
public void app(double a){} 才是派生类自己定义的方法,
只有当调用的方法于派生类自己定义的方法不兼容的化,才区调用重写的方法!在这里,int可以隐式的转换成double
类型的,所以可以被调用!如果,把public 
void app(double a){}改为:public void app(int a){},而在主函数
里调用的是b.app(
5.55);,那么,程序检查了派生类自定义的方法不匹配,才区调用重写的方法!
    解决的办法:
                可以强制转换对象为基类对象,((clsA)b).app(
5);但是,根本解决办法最好是别定义和基类的虚方法
相同的方法名!