C#中方法重载与方法重写区别
来源:互联网 发布:mac中国官网 编辑:程序博客网 时间:2024/06/06 00:37
方法重载:在一个类中存在方法名相同、参数列表不同(参数个数或者参数类型不同)、返回值类型可以不相同,调用的时候根据参数列表的不同来正确调用。
方法重写:是指子类重新定义父类函数的方法,要求父类和子类中方法名称相同、参数列表不同(参数个数或者参数类型不同)和返回值类型相同。
虚方法重载就是在基类中的方法用virtual关键字来标识,然后在继承类中对该类进行重写(override),这样基类中的方法已经被重写了,已经失去了功能了。当让基类的对象的引用直接指向继承类的对象时(多态性),调用该方法则是调用的继承类的方法。
方法隐藏:无论基类中的方法是否用了virtual关键字,继承类中都可以用new关键字(如果不用new的话,不会产生错误,但会生成一个编译警告)将基类中的方法隐藏,重写就是原来的(基类中)已经不存在了,而隐藏是原来的还存在。所以当让基类的对象的引用直接指向继承类的对象时(多态性),调用该方法则是调用的基类的方法。
基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。访问父类则调用父类的方法,访问子类则调用子类的方法。
class Program{
static void Main(string[] args)
{
Console.WriteLine("父类方法:");
Base b = new Base();
b.Print();
b.Display();
Console.WriteLine("子类方法:");
Derived d = new Derived();
d.Print();
d.Display();
Console.WriteLine("把子类对象赋值给父类对象之后的方法显示:");
b = d;
Console.WriteLine("父类方法:");
b.Print();
b.Display();
Console.WriteLine("子类方法:");
d.Print();
d.Display();
}
}
class Base{
public void Display(){
Console.WriteLine("Display in Base");
}
public virtual void Print(){
Console.WriteLine("Print in Base");
}
}
class Derived : Base{
new public void Display()
{
Console.WriteLine("Display in Derived");
}
public override void Print(){
Console.WriteLine("Print in Derived");
}
}
结果:
- C#中方法重载与方法重写区别
- C#中重载方法与重写方法的区别
- Java中方法重写与方法重载的区别
- 方法重写与方法重载的区别
- 方法重写与方法重载的区别
- 方法重写与方法重载的区别
- 方法重载与方法重写的区别
- java中方法的重载与重写的区别
- java中方法的重载与重写的区别
- java中方法的重载与重写的区别
- Java中方法的重载与重写的区别
- Java中方法重载与重写的区别
- Java中方法的重载与重写的区别
- java学习中重写与重载方法的区别
- java中方法的重载与重写的区别
- Java中方法重载与方法重写
- Java中方法重写与方法重载
- C#之方法的重载与重写
- for循环问题
- GNU Profiler (gprof) 的简单使用
- Java 仿C# delegate
- python中的参数定义与可变参数
- 在适合自己的地方闪光
- C#中方法重载与方法重写区别
- Java编程之对象序列化解析
- 中文分词算法大全
- c#导出Excel的方法
- PostgreSQL数据库压力测试工具pgbench简单应用
- AndroidManifest.xml文件解析
- 对CSDN删我博文表示强烈不满!就此封博!永不更新!
- Linux输入子系统:多点触控协议
- 使用Paragon Alignment Tool无损4K对齐图文教程