一,抽象的实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Virtualdemo
{
class Program
{
static void Main(string[] args)
{//BClass A = new BClass(); 抽象类无法被实例
Class1 c = new Class1();
BClass c2 = c;
c2.MethodA();
c.MethodA();
c2.MethodB();
c.MethodB();
c2.MethodC();
c.MethodC();
Console.ReadKey();
}
}
abstract class BClass //抽象类无法被实例
{
public virtual void MethodA() { Console.WriteLine("BClassA"); }
public virtual void MethodB() { Console.WriteLine("BClassB"); }
public virtual void MethodC() { Console.WriteLine("BClassC"); }
}
class Class1 : BClass
{
public void MethodA() { Console.WriteLine("MethodA"); }//如果一个虚函数 在子类中没有通过override关键字,那么这个方法就没有被重写,而是被隐藏了
public override void MethodB() { Console.WriteLine("MethodB"); }
public override void MethodC() { base.MethodC(); }
}
}
从上图得出的结果是:
综上:抽象类的虚方法需要被重写,那问题来了重写有两种方式,new和override又有什么区别
二,new和override重写的区别:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Virtualdemo
{
class Program
{
static void Main(string[] args)
{
Teacher t = new Teacher();
Student stu = t;
stu.Exam();
stu.Say();
t.Say();
Console.ReadKey();
}
}
public abstract class Student
{
public virtual void Exam()
{
Console.WriteLine("学生都要考试");
}
public void Say()
{
Console.WriteLine("我是学生");
}
}
public class Teacher : Student
{
public override void Exam()
{
Console.WriteLine("老师不用考试");
}
//public override void Say() //报错,提示没有virtual,无法被重写
//{
// Console.WriteLine("我是老师");
//}
public new void Say()
{
Console.WriteLine("我是老师");
}
}
}
结果显示为:
综上总结:
1、如果基类没有定义虚方法,那子类只能使用new,而不能使用override
2、基类有没有定义虚方法,子类都可以使用new
3、子类使用new并不叫重写,而是子类新创建一个方法,只是新创建的这个方法刚好跟基类中的方法同名
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# c#
# new
# override
# override重写方法
# new和override
# C# 重写ComboBox实现下拉任意组件的方法
# C#重写DataGridView
# 在C#的类或结构中重写ToString方法的用法简介
# C#通过重写Panel改变边框颜色与宽度的方法
# c#方法重写和隐藏的学习示例
# c#重写TabControl控件实现关闭按钮的方法
# C#中重载与重写区别分析
# C#运算符重载用法实例分析
# C#中重载相等(==)运算符示例
# C#中多态、重载、重写区别分析
# C#重载运算符详解
# 基于C#方法重载的总结详解
# c# 重载WndProc
# 实现重写“最小化”的实现方法
# C#中重载重写和覆盖的定义与区别
# 重写
# 子类
# 我是
# 抽象类
# 类中
# 综上
# 来了
# 都要
# 又有
# 而不
# 可以使用
# 有两种
# 报错
# 不叫
# 创建一个
# 大家多多
# 上图
# 结果是
# 什么区别
# Main
相关文章:
北京的网站制作公司有哪些,哪个视频网站最好?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
创业网站制作流程,创业网站可靠吗?
网站制作的步骤包括,正确网址格式怎么写?
青岛网站建设如何选择本地服务器?
魔方云NAT建站如何实现端口转发?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
如何在阿里云域名上完成建站全流程?
如何通过远程VPS快速搭建个人网站?
网站制作说明怎么写,简述网页设计的流程并说明原因?
如何基于云服务器快速搭建个人网站?
潮流网站制作头像软件下载,适合母子的网名有哪些?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
代购小票制作网站有哪些,购物小票的简要说明?
如何快速查询域名建站关键信息?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
已有域名能否直接搭建网站?
html制作网站的步骤有哪些,iapp如何添加网页?
建站之星代理平台如何选择最佳方案?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
制作表格网站有哪些,线上表格怎么弄?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
如何快速生成凡客建站的专业级图册?
如何快速搭建FTP站点实现文件共享?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何获取PHP WAP自助建站系统源码?
如何在腾讯云服务器快速搭建个人网站?
如何快速打造个性化非模板自助建站?
如何自定义建站之星模板颜色并下载新样式?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
如何制作算命网站,怎么注册算命网站?
如何快速重置建站主机并恢复默认配置?
常州自助建站费用包含哪些项目?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
高端企业智能建站程序:SEO优化与响应式模板定制开发
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何选择网络建站服务器?高效建站必看指南
建站之星安装步骤有哪些常见问题?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何在阿里云部署织梦网站?
建站ABC备案流程中有哪些关键注意事项?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何选择高性价比服务器搭建个人网站?
测试制作网站有哪些,测试性取向的权威测试或者网站?
如何用IIS7快速搭建并优化网站站点?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
*请认真填写需求信息,我们会在24小时内与您取得联系。