zoukankan      html  css  js  c++  java
  • c#之new关键词——隐藏基类方法

    当从基类继承了一个(非抽象成员时),也就继承了父类的实现代码。如果是virtual成员,可以override;另外一种方法也能隐藏父类的实现代码(虚成员和非虚成员都可使用):
    定义与父类相同的方法名,加上关键词new

    	public class Parent
    	{
    		public void Fun()
    		{
    			Debug.log("我是爸爸");
    		}
    		public virtual void virtualFun()
    		{
    			Debug.log("我是妈妈");
    		}
    	}
    	class Son:Parent
    	{
    		public new void Fun()
    		{
    			Debug.log("我是爸爸的儿子");
    		}
    		public  new void virtualFun()
    		{
    			Debug.log("我是妈妈的儿子");
    		}
    	}
    

    如果不加关键字,不会报错,会有警告提醒你加上(效果是一样的,若是无意写重可以改正):

    效果:若是用父类定义的,依然调用父类的方法:

        Parent person=new Son();
    	person.Fun();//非虚方法
    	person.virtualFun();//虚方法
    

    运行结果:
    与override的区别:如果是重写virtual方法(将virtualFun前面是new换成override),则会调用子类的方法:

  • 相关阅读:
    mysql 注意事项 PreparedStatement 对比 statement
    Dbutils commons-dbutils-1.3
    C3P0 mysql 5.7
    servlet-应用mysql-1
    javabean 用integer 而不是int
    servlet-1
    servlet 路径 编码 问题
    mac tomcat 9.0
    case end 的用法
    自定义抛出异常
  • 原文地址:https://www.cnblogs.com/ninomiya/p/9244085.html
Copyright © 2011-2022 走看看