c#中的new和override的实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; /*
简单说,抽象方法是需要子类去实现的。虚方法是已经实现了的,可以被子类覆盖,也可以不覆盖,取决于需求。 抽象方法和虚方法都可以供派生类重写。
*/
namespace MySpace
{
class dad
{
protected string name; //成员变量 public dad(string n) //构造函数
{
name = n;
}
public void say() //基类say方法
{
Console.WriteLine("I am {0}.", name);
}
public virtual void growup() //基类growup方法 虚函数
{
Console.WriteLine("{0} has grown old.", name);
}
}
class son : dad //继承父亲
{
public son(string n) //构造函数
: base(n)
{
//name = n;
}
public new void say() //在派生类中定义的和基类中的某个方法同名的方法,使用 new 关键字定义
{
Console.WriteLine("I am {0} and a son.", name);
}
public override void growup() //重写(override)是用于重写基类的虚方法,这样在派生类中提供一个新的方法,继承类中的重写虚函数需要声明关键字 override
{
//base.growup();
Console.WriteLine("{0} is growing up.", name);
}
}
class entrance
{
public static void Main()
{
dad grandpa = new dad("grandpa"); //用父类生成的父类对象
grandpa.say(); //父类say方法的调用
grandpa.growup(); //父类growup方法的调用 Console.WriteLine("\nnew son(\"father\")");
dad father = new son("father"); //用子类生成的父类对象
father.say(); //调用父类方法,访问隐藏方法是父类的方法
father.growup(); //调用子类方法,访问重写方法是子类的方法 Console.WriteLine("\nson tom = new son(\"Tom\")");
son tom = new son("Tom"); //用子类生成的子类对象
tom.say(); //访问隐藏方法是子类的方法,访问重写方法是子类的方法
tom.growup(); //Console.ReadKey();
}
}
} /* I am grandpa.
grandpa has grown old. new son("father")
I am father.
father is growing up. son tom = new son("Tom")
I am Tom and a son.
Tom is growing up.
*
* 上边的结果: 1)用父类生成的父类对象,grandpa,访问隐藏方法是父类的方法,访问重写方法是父类的方法
2)用子类生成的父类对象,father,访问隐藏方法是父类的方法,访问重写方法是子类的方法
3)用子类生成的子类对象,son,访问隐藏方法是子类的方法,访问重写方法是子类的方法
请按任意键继续. . .
*/
这个实例比较好,因此特此转载。说明了new和override的区别。
c#中的new和override的实例的更多相关文章
- android中无限循环滑动的gallery实例
android中无限循环滑动的gallery实例 1.点击图片有变暗的效果,使用imageview.setAlpha(),并且添加ontouchListener public void init() ...
- Android中制作自定义dialog对话框的实例
http://www.jb51.net/article/83319.htm 这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...
- Android中的跨进程通信方法实例及特点分析(二):ContentProvider
1.ContentProvider简单介绍 在Android中有些数据(如通讯录.音频.视频文件等)是要供非常多应用程序使用的.为了更好地对外提供数据.Android系统给我们提供了Content P ...
- gvoory脚本中关于HttpClient使用详解实例
一.gvoory脚本中关于HttpClient使用详解实例 HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=n ...
- JAVA - 请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成 ...
- 处于同一个域中的两台Sql server 实例无法连接
处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...
- RDIFramework.NET 中多表关联查询分页实例
RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...
- c#中virtual, abstract和override的区别和用法
virtual是把一个方法声明为虚方法,使派生类可重写此方法,一般建立的方法是不能够重写的,譬如类A中有个方法protected void method(){ 原代码....;}类B继承自类A,类B能 ...
- asp.net中生成缩略图并添加版权实例代码
这篇文章介绍了asp.net中生成缩略图并添加版权实例代码,有需要的朋友可以参考一下 复制代码代码如下: //定义image类的对象 Drawing.Image image,newimage; //图 ...
随机推荐
- JDK本地内存追踪NMT
通常情况下, JVM占用的内存不仅仅是-Xmx, -Xms等指定的大小, 因为JVM也是一个应用, 它需要额外的空间去完成它的工作, 除了堆外, JVM会分配内存的地方包括以下这些: Metaspac ...
- 第十届蓝桥杯大赛-特别数的和-C++
解法一(暴力获取): #include<stdio.h> #include<stdlib.h> int main(void) { int n; ; ; printf(" ...
- delphi10.2断点调试dll
因为工作需要接触delphi10.2,需要调试dll,但是从网上查找的资料写的不是很清楚,我折腾了半天,我就动手写清楚操作步骤: 步骤1:用delphi10.2打开需要调试的dll,需要先打开,然后需 ...
- Jenkins+harbor+gitlab+k8s 部署maven项目
一.概述 maven项目部署流程图如下: 环境介绍 操作系统 ip 角色 版本 ubuntu-16.04.4-server-amd64 192.168.10.122 Jenkins+harbor Je ...
- Quartz时间配置(周期任务)
序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 小时 是 0-23 , - ...
- 【Spring-AOP-学习笔记】
http://outofmemory.cn/java/spring/spring-DI-with-annotation-context-component-scan https://www.cnblo ...
- C#——零散学习1
C#——零散学习1 //结构体(与C语言相似) struct Position { public float x; public float y; //不一定需要把结构体成员设置为pu ...
- 2. matplotlib绘制散点图
与绘制直线图的唯一区别:plt.scatter # coding=utf-8 from matplotlib import pyplot as plt from matplotlib import f ...
- 自学Python编程的第九天(希望有大牛帮我看看我第一个代码是否有弊端,感谢您们)----------来自苦逼的转行人
2019-09-19-22:11:33 今天是自学Python的第九天 学的内容是有关文件操作的,如:r.w.a.rb.wb.ab.r+.w+.a+等 有大牛帮我看一下我的代码第一个有没有什么弊端吗? ...
- 换个语言学一下 Golang (6)——控制流程
Go语言的控制结构关键字只有if..else if..else ,for 和 switch. 而且在Go中,为了避免格式化战争,对程序结构做了统一的强制的规定.看下下面的例子. 请比较一下A程序和B程 ...