zoukankan      html  css  js  c++  java
  • 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(" ");
    Base2 b2 = new Base2();
    b2.ClassB();
    Base2 a = new MyAlass();
    a.ClassB();
     
    Console.ReadKey();
    }
    }
     
    运行结果:

  • 相关阅读:
    Objective-C Memory Management Being Exceptional 异常处理与内存
    Objective-C Memory Management 内存管理 2
    c语言全局变量与局部变量(当变量重名时)的使用情况
    c语言指针字符串与字符数组字符串的区别
    c语言数组不同初始化方式的结果
    补码的用途
    struts2框架加载配置文件的顺序
    CSS盒子模型
    基于注解整合struts2与spring的时候如果不引入struts2-spring-plugin包自动装配无效
    @Resource注解省略name属性后的行为
  • 原文地址:https://www.cnblogs.com/myhomebo/p/5465712.html
Copyright © 2011-2022 走看看