最近在学习C#,在C#中的类看到重写和隐藏基类的方法这些概念。才开始感觉自己不是很理解这些概念。也区分不开这些概念。通过自己的查找资料和练习后。慢慢的理解了类中的隐藏和重写这个概念。在C#中只有在基类定义了一些虚方法才能在派生类中重写基类中的虚方法。但是如果在派生类中使用隐藏方法,就不用在基类中定义虚方法。虚方法和重写实现的功能感觉是差不多的。都是在派生类中改变了基类中的方法,但是两者还是有质的区别,概念的性质也是不一样的。
   重写是指:将基类中的方法替换掉,也就是抹掉基类中的原有方法,在派生类中重新写一种方法。当然重写的这个新方法也会作用到基类中。听着很抽象,但是看看代码就知道了。

代码如下:

 using System;
namespace LHT
{
class a
{
public virtual void print()//虚方法,关键字为virtual
{
Console.WriteLine("这个是基类中的虚方法");
}
} class b : a
{
public override void print()//重写基类中的方法,关键字为override
{
Console.WriteLine("这个是派生类中的重写方法");
}
} class c
{
static void Main()
{
a temp1 = new a();
b temp = new b();
temp.print();
temp.print();
Console.ReadKey();
}
}
}

结果如下:

这个是派生类中的重写方法
这个是派生类中的重写方法

隐藏是指将基类中的方法忽略掉,再在派生类中写一个方法,这个方法只是在派生类中有效,并不会影响到基类(当然基类中的方法可以是普通的方法,也可以是虚拟的方法)。

代码如下:

 using System;
namespace lht
{
class a
{
public void print()//普通的方法
{
Console.WriteLine("这个是基类中方法");
}
}
class b : a
{
new public void print()//隐藏基类的方法,在派生类中定义新的方法(关键字new)
{
Console.WriteLine("这个是派生类中的方法");
}
}
class c
{
static void Main()
{
b temp = new b();
a temp1 = new a();
temp.print();
temp1.print();
Console.ReadKey();
}
}
}

结果如下:

这个是派生类中的方法
这个是基类中方法

关于在C#中对类中的隐藏基类方法和重写方法的理解的更多相关文章

  1. c++中在一个类中定义另一个只有带参数构造函数的类的对象

    c++中在一个类中定义另一个只有带参数构造函数的类的对象,编译通不过 #include<iostream> using namespace std; class A { public:  ...

  2. Java中主类中定义方法加static和不加static的区别

     Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...

  3. python---Django中模型类中Meta元对象了解

    Django中模型类中Meta元对象了解 1.使用python manage.py shell 进入编辑命令行模式,可以直接进入项目(为我们配置好了环境) python manage.py shell ...

  4. C++中若类中没有默认构造函数,如何使用对象数组

    前言: 如果定义一个类,有其默认的构造函数,则使用new动态实例化一个对象数组,不是件难事,如下代码: #include <memory> #include <iostream> ...

  5. 转载:java 中对类中的属性使用set/get方法的意义和用法

    经常看到有朋友提到类似:对类中的属性使用set/get方法的作用?理论的回答当然是封闭性之类的,但是这样对我们有什么作用呢?为什么要这样设计?我直接使用属性名来访问不是更直接,代码更简洁明了吗?下面我 ...

  6. python中的类中属性元素加self.和不加self.的区别

    在类中,self只能在函数中使用,表示的是实例属性,就是每个实例可以设置不值,而不相互影响.如果在类级别使用没有self的属性,是类属性,一般作为全局变量来用的.事实上:就是一个是类属性 一个是对象属 ...

  7. 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  8. 4. 在Inspector面板中显示类中变量+ 拓展编辑器

    1. C#脚本如下: using UnityEngine; using System.Collections; public class MyTest : MonoBehaviour { ; ; [S ...

  9. java中File类中list()和listFiles()方法区别

    list()和listFiles()方法区别: 1.返回值类型不同:前者为String数组,后者为File对象数组 2.数组中元素内容不同:前者为string类型的[文件名](包含后缀名),后者为Fi ...

随机推荐

  1. bzoj 3580 冒泡排序 乱搞+思维

    冒泡排序 Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 243  Solved: 108[Submit][Status][Discuss] Descr ...

  2. Javascript基本代码

    简单的了解了javascript 的基本代码,感觉和c#中的语句差不多. <!DOCTYPE html> <html xmlns="http://www.w3.org/19 ...

  3. NYOJ 740 DP

    “炫舞家“ST 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 ST是一个酷爱炫舞的玩家.TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Danc ...

  4. 手脱ACProtect V2.0(无Stolen Code)

    1.载入PEID ACProtect V2.0 -> risco 2.载入OD > 00A04000 push ACP_Feed.0040A000 ; //入口点 0B104000 pus ...

  5. 查看oracle日志文件切换频率

    column avg format 999.99 column day format a6 ) "Total", , )) h0, , )) "h1", , ) ...

  6. PHP扩展--Suhosin保护PHP应用系统

    什么是Suhosin? Suhosin是一个PHP程序的保护系统.它的设计初衷是为了保护服务器和用户抵御PHP程序和PHP核心中,已知或者未知的缺陷. Suhosin有两个独立的部分,使用时可以分开使 ...

  7. Jmeter 自动化脚本录制-Badboy

    1. Badboy 录制操作(输入URL其余和平常操作一毛一样). 2. 保存结果,并Export to Jmeter,退出保存. 3. 导入已录制好的文件,添加监听器查看结果. 一般的监听器有(查看 ...

  8. 省队集训 Day4 a

    [题目大意] 求有多少区间只包含1个出现次数为1的数. $1\leq n \leq 5*10^5, 0 \leq a_i \leq 10^9$ [题解] 考虑枚举右端点,设这个数上一次出现位置为pre ...

  9. 【BZOJ】1577: [Usaco2009 Feb]庙会捷运Fair Shuttle

    [题意]公车从1开到n,有k群牛想从一个点到达另一个点,公车最多乘坐c个人,牛群可以拆散,问最多载多少牛到达目的地. [算法]贪心+堆 [题解]线段和点的贪心,一般有按左端点排序和按右端点排序两种方法 ...

  10. TensorFlow非线性拟合

    1.心得: 在使用TensorFlow做非线性拟合的时候注意的一点就是输出层不能使用激活函数,这样就会把整个区间映射到激活函数的值域范围内无法收敛. # coding:utf-8 import ten ...