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的实例的更多相关文章

  1. android中无限循环滑动的gallery实例

    android中无限循环滑动的gallery实例 1.点击图片有变暗的效果,使用imageview.setAlpha(),并且添加ontouchListener public void init() ...

  2. Android中制作自定义dialog对话框的实例

    http://www.jb51.net/article/83319.htm   这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...

  3. Android中的跨进程通信方法实例及特点分析(二):ContentProvider

    1.ContentProvider简单介绍 在Android中有些数据(如通讯录.音频.视频文件等)是要供非常多应用程序使用的.为了更好地对外提供数据.Android系统给我们提供了Content P ...

  4. gvoory脚本中关于HttpClient使用详解实例

    一.gvoory脚本中关于HttpClient使用详解实例 HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=n ...

  5. JAVA - 请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

    请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成 ...

  6. 处于同一个域中的两台Sql server 实例无法连接

    处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...

  7. RDIFramework.NET 中多表关联查询分页实例

    RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为 ...

  8. c#中virtual, abstract和override的区别和用法

    virtual是把一个方法声明为虚方法,使派生类可重写此方法,一般建立的方法是不能够重写的,譬如类A中有个方法protected void method(){ 原代码....;}类B继承自类A,类B能 ...

  9. asp.net中生成缩略图并添加版权实例代码

    这篇文章介绍了asp.net中生成缩略图并添加版权实例代码,有需要的朋友可以参考一下 复制代码代码如下: //定义image类的对象 Drawing.Image image,newimage; //图 ...

随机推荐

  1. 自定义注解实现简单的orm映射框架

    package com.mj; import javax.xml.bind.Element; import java.lang.annotation.*; import java.lang.refle ...

  2. IDEA更改JavaScript版本

    最好改两个地方 File -> File -> -- --

  3. [转帖]Linux中buff/cache内存占用过高解决办法

    Linux中buff/cache内存占用过高解决办法 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html /proc/sys/vm/drop_cac ...

  4. 【C语言】 strlen()入参空指针导致段错误

    背景: 在工作中调试sqlite3相关代码的时候,调用printf()打印sqlite3_exec()的执行日志:因为sqlite3_exec()保存日志的参数传入时为NULL,且没有执行错误,所以再 ...

  5. linux终端命令行前缀设置为“当前目录”(非绝对路径)

    操作 打开家目录下的隐藏文件.bashrc 定位到62行,将小写的\W改为大写,保存即可. 重新打开bash 注意: /etc/profile , /etc/bashrc等文件里的环境变量设置会被.b ...

  6. 简单端口映射、转发、重定向工具-Rinetd

    一.简介 Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具.Rinetd是单一过程的服务器,它处理任何数量的连接到在配置文件etc/rinetd中指定的 ...

  7. 通过重新上传修改后的docker镜像来在kubeapps上实现k8s上部署的nginx版本更新,回退等

    docker操作:制作自定义镜像 # docker下载官方nginx镜像 docker pull nginx # 基于该镜像运行一个容器 docker run -it -d --name nginx_ ...

  8. 函数式接口java.util.function

    什么是函数式接口 为什么要用函数式接口 java.util.function和其他的函数式接口 lamdba表达式 方法引用 流 Stream 1 什么是函数式接口 用@FunctionInterfa ...

  9. SessionChange

    protected override void OnSessionChange(SessionChangeDescription changeDescription) { System.IO.File ...

  10. Charles配置https

    1. 安装Charles ,破解将Charles.jar 覆盖安装路径的\lib 中的文件 2. 查看本机IP 3. 设置手机代理 4. 设置: 5. 手机安装证书 手机浏览器输入网址:chls.pr ...