C#基础知识学习(1)方法的重写和隐藏

做了1年多了C#,发现些项目过程中很多基础东西都不是很清晰,基础不够牢固。现在开始复习基础知识并做重点记录

方法需要被重写的时候,可以在方法前加入virtual使方法变成虚方法。

这样我们可以重新写个方法对虚方法进行重写需要加上override。
注意:成员字段和静态函数都不能声明为virtual,因为这个概念支队类中的实例函数成员有意义。
 
1. 重写override:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.
在重写方法中,有个特殊方法,base.<MethodName>(),这里的MethodName是父类的方法名。
class MyAlass:Base2
{
public override void ClassB()
{
base.ClassB();
Console.WriteLine("a.ClassB()");
}
}
直接在子类重写方法中加载父类方法。
结果是
 
2.隐藏 : 基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。
 自己的理解:
向下转型继承,子类new覆盖父类的方法,在调用方法的时候,显示和调用的是父类的方法而不是子类的方法。
子类override重载父类方法,在调用方法的时候,调用的是子类的方法。相当于删除了父类的方法
     说白了:new是覆盖,override是重载,“覆盖”并不意味着“删除”,但“重载”意味着“删除”,这就是“覆盖”和“重载”的区别  
例子:
//基类1 
class Base
{
public void ClassA()
{
Console.WriteLine("Base.ClassA()");
}
}
//子类覆盖基类方法
class MyClass:Base
{
public new void ClassA()
{
Console.WriteLine("c.ClassA()");
}
}
 
//基类2
class Base2
{
public virtual void ClassB()
{
Console.WriteLine("Base2.ClassB()");
}
}
//子类重写基类2的方法
class MyAlass:Base2
{
public override void ClassB()
{
Console.WriteLine("a.ClassB()");
}
}
//主程序
class Program
{
static void Main(string[] args)
{
Base b1 = new Base();
b1.ClassA();
Base c = new MyClass();
c.ClassA();
Console.WriteLine("\n");
Base2 b2 = new Base2();
b2.ClassB();
Base2 a = new MyAlass();
a.ClassB();
 
Console.ReadKey();
}
}
 
运行结果:

转载于:https://www.cnblogs.com/myhomebo/p/5465712.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值