C#隐藏父类
一.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#隐藏父类的更多相关文章
- 隐藏父类方法的new和重写父类虚方法virtual的区别
一.代码 public class Parent { public void Method_A() { Console.WriteLine("Parent Method_A"); ...
- c/c++ 继承与多态 子类隐藏父类的同名非虚函数
问题1:若类A里有公有成员方法int fcn(),类B公有继承类A,并类B里有公有成员方法int fcn(int),可以在用户代码里,用类B的对象调用类A的int fcn()吗?? 不可以,编译出错, ...
- override和new关键字 隐藏父类的方法
正常情况下,父类virtual的方法,子类override class Animal { public virtual void EatFood() { Console.WriteLine(" ...
- 为何JAVA虚函数(虚方法)会造成父类可以"访问"子类的假象?
首先,来看一个简单的JAVA类,Base. 1 public class Base { 2 String str = "Base string"; 3 protected vo ...
- java覆盖和隐藏
隐藏指的是子类把父类的属性或者方法隐藏了,即将子类强制转换成父类后,调用的还是父类的属性和方法,而覆盖则指的是父类引用指向了子类对象,调用的时候会调用子类的具体方法. (1) 变量只能被隐藏(包括静态 ...
- java的重载、覆盖和隐藏的区别
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...
- Java 隐藏和覆盖
我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际上这又分为两种情况,就是方法和变量在继承时的覆盖和隐藏问题,这些概念性的东西看似无聊 ...
- java中重载、覆盖和隐藏三者的区别分析
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型.参数个数.参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg ...
- C++ 方法隐藏
1.过载:一个类中,方法名相同,形参表不同的方法. 2.重写:子类与父类的virtual方法,方法名,形参表相同. 3.考虑下面的情况,子类与父类方法名相同. 父类是virtual方法 ...
随机推荐
- 模板设计在tomcat中的应用
tomcat是一个常见的web容器,用户使用它可以很方便地管理servlet小程序,而servlet与tomcat的交互代码设计就用到了模板设计. 何谓模板设计,就是定义一个抽象父类,在该父类中组织子 ...
- JVM性能调优总结
引自其它博客 : https://www.cnblogs.com/donaldlee2008/p/5469685.html 注 : 该条同样适用于Tomcat调优 调优配置说明 堆大小设置JVM 中最 ...
- 周末没事干就看CSS JS Python ThinkPHP的书,照着例子运行就行,可以增强信心(www.delphihtmlcomponents.com 是神器,也可以帮助我学习。还有虚拟机运行Web)
https://www.javatpoint.com/javascript-tutorialhttps://www.javatpoint.com/html-tutorialhttps://www.ja ...
- StringBuufer与StringBulder线程的区别
StringBulder的append方法 不是synchronized修饰的 线程不安全 效率相对很快StringBuufer的append方法 是 synchronized修饰的 ...
- andorid开发build.gradle 增加几种产品的方法
因为需要有些ndk的开发,cmakelists里需要定义不同的变量,这个在网上搜索解决方案,不是很容易就直接找到答案. 尝试了不少,最后找到解决方案.升级Gradle3.0,这个文章价值高. 在ras ...
- 20.C# 创建自己的泛型类型
1.定义泛型类 可以使用以下语法创建泛型类,T可以是任意符合C#标识符命名规范的任意标识符 class MyGenericClass<T> { //.... } 泛型类可以包含任意多个类型 ...
- locust压测websocket协议
Locust是以HTTP为主要目标构建的. 但是,通过编写触发器request_success和 request_failure事件的自定义客户端,可以轻松扩展到任何基于请求/响应的系统的负载测试 . ...
- C++模板类中友元函数的写法
首先,已声明好的类Triangle file://Triangle.h template<class T> class Triangle{ public: Triangle(T width ...
- 记录Django学习1
一.Django 1.首先安装好django模块 pip3 install django 2.然后配置好相应的环境变量 C:\Python35\Scripts 3. 创建Django工程,首先可以使用 ...
- 小程序开发-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 是一个关于性能优 ...