一.override和new 关键字隐藏父类的方法

正常情况下,父类virtual的方法,子类override

class Animal
{
public virtual void EatFood()
{
Console.WriteLine("动物在吃东西");
}
}
class Cat : Animal
{
public override void EatFood()
{
Console.WriteLine("猫在吃鱼");
}
} class Program
{
static void Main(string[] args)
{
Animal animal = new Cat();
animal.EatFood();//输出的是子类的方法
Console.Read();
}
}

另外一种情况,父类的方法不是virtual的,但是子类中有同名的方法

但是子类需要隐藏掉父类的方法

class Animal
{
public void EatFood()
{
Console.WriteLine("动物在吃东西");
}
}
class Cat : Animal
{
new public void EatFood()//通道new关键字,隐藏掉父类的方法
{
Console.WriteLine("猫在吃鱼");
}
} class Program
{
static void Main(string[] args)
{
Animal animal = new Cat();
animal.EatFood();//输出的是父类的方法
Console.Read();
}
}

需要注意的是两种方式隐藏父类方法输出结果不一样,override 输出子类方法

                        new     输出父类方法

C#中抽象类和接口的区别与使用  :https://www.cnblogs.com/sunzhenyong/p/3814910.html

C#中Abstract 、Virtual和Override的使用 : https://www.cnblogs.com/akwwl/archive/2012/08/03/2622026.html

C#隐藏父类的更多相关文章

  1. 隐藏父类方法的new和重写父类虚方法virtual的区别

    一.代码 public class Parent { public void Method_A() { Console.WriteLine("Parent Method_A"); ...

  2. c/c++ 继承与多态 子类隐藏父类的同名非虚函数

    问题1:若类A里有公有成员方法int fcn(),类B公有继承类A,并类B里有公有成员方法int fcn(int),可以在用户代码里,用类B的对象调用类A的int fcn()吗?? 不可以,编译出错, ...

  3. override和new关键字 隐藏父类的方法

    正常情况下,父类virtual的方法,子类override class Animal { public virtual void EatFood() { Console.WriteLine(" ...

  4. 为何JAVA虚函数(虚方法)会造成父类可以"访问"子类的假象?

      首先,来看一个简单的JAVA类,Base. 1 public class Base { 2 String str = "Base string"; 3 protected vo ...

  5. java覆盖和隐藏

    隐藏指的是子类把父类的属性或者方法隐藏了,即将子类强制转换成父类后,调用的还是父类的属性和方法,而覆盖则指的是父类引用指向了子类对象,调用的时候会调用子类的具体方法. (1) 变量只能被隐藏(包括静态 ...

  6. java的重载、覆盖和隐藏的区别

    重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...

  7. Java 隐藏和覆盖

    我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际上这又分为两种情况,就是方法和变量在继承时的覆盖和隐藏问题,这些概念性的东西看似无聊 ...

  8. java中重载、覆盖和隐藏三者的区别分析

    重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...

  9. C++ 方法隐藏

    1.过载:一个类中,方法名相同,形参表不同的方法. 2.重写:子类与父类的virtual方法,方法名,形参表相同. 3.考虑下面的情况,子类与父类方法名相同. 父类是virtual方法         ...

随机推荐

  1. 模板设计在tomcat中的应用

    tomcat是一个常见的web容器,用户使用它可以很方便地管理servlet小程序,而servlet与tomcat的交互代码设计就用到了模板设计. 何谓模板设计,就是定义一个抽象父类,在该父类中组织子 ...

  2. JVM性能调优总结

    引自其它博客 : https://www.cnblogs.com/donaldlee2008/p/5469685.html 注 : 该条同样适用于Tomcat调优 调优配置说明 堆大小设置JVM 中最 ...

  3. 周末没事干就看CSS JS Python ThinkPHP的书,照着例子运行就行,可以增强信心(www.delphihtmlcomponents.com 是神器,也可以帮助我学习。还有虚拟机运行Web)

    https://www.javatpoint.com/javascript-tutorialhttps://www.javatpoint.com/html-tutorialhttps://www.ja ...

  4. StringBuufer与StringBulder线程的区别

    StringBulder的append方法 不是synchronized修饰的   线程不安全     效率相对很快StringBuufer的append方法  是 synchronized修饰的  ...

  5. andorid开发build.gradle 增加几种产品的方法

    因为需要有些ndk的开发,cmakelists里需要定义不同的变量,这个在网上搜索解决方案,不是很容易就直接找到答案. 尝试了不少,最后找到解决方案.升级Gradle3.0,这个文章价值高. 在ras ...

  6. 20.C# 创建自己的泛型类型

    1.定义泛型类 可以使用以下语法创建泛型类,T可以是任意符合C#标识符命名规范的任意标识符 class MyGenericClass<T> { //.... } 泛型类可以包含任意多个类型 ...

  7. locust压测websocket协议

    Locust是以HTTP为主要目标构建的. 但是,通过编写触发器request_success和 request_failure事件的自定义客户端,可以轻松扩展到任何基于请求/响应的系统的负载测试 . ...

  8. C++模板类中友元函数的写法

    首先,已声明好的类Triangle file://Triangle.h template<class T> class Triangle{ public: Triangle(T width ...

  9. 记录Django学习1

    一.Django 1.首先安装好django模块 pip3 install django 2.然后配置好相应的环境变量 C:\Python35\Scripts 3. 创建Django工程,首先可以使用 ...

  10. 小程序开发-Now you can provide attr "wx:key" for a "wx:for" to improve performance

    Now you can provide attr "wx:key" for a "wx:for" to improve performance 是一个关于性能优 ...