关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

C#中使用派生类更改基类的数据和行为如下

发布时间:2020-02-14 18:37:29

C#中使用派生类更改基类的数据和行为,C#提供两种方法:一是使用new的派生成员替换基成员;二是重写虚拟的基成员(Override和Virtual)。还有介绍实现了类的接口强制转换为接口的时候,转换后还是能调用类中定义好的接口。直接看代码:


using System; 

using System.Collections.Generic; 

using System.Linq; 

using System.Text; 


namespace test6 

    class Program 

    { 



        static void Main(string[] args) 

        { 

            B b = new B(); 

            A a = new A(); 

            //在1和2,由于B类只是用了new来替换A类中的AA()方法,这种方式不是继 

            //承多态性,b在强制转化为A类时调用AA(),是调用基类A的方法,而不是 

            //b用new替换A类中的AA()方法。 

            //而3和4,用的是virtual和override来实现继承多态性,所以这种方式既 

            //使把b强制转化为A类时调用AA(),也是b类中覆盖的AA()方法 

            Console.WriteLine("直接从B类中调用b.AA():");//1 

            b.AA(); 

            Console.WriteLine("直接从B类中调用((A)b).AA():");//2 

            ((A)b).AA(); 

            Console.WriteLine("直接从B类中调用b.AAA():");//3 

            b.AAA(); 

            Console.WriteLine("直接从B类中调用((A)b).AAA():");//4 

            ((A)b).AAA(); 


            //这个说明类即使是强制转化了接口也不会掉失实现接口内容。 

            //如:A类中实现了接口A并要输出一定的内容,但是继承A类的B类转换为接口 

            //Inter的时候,还是能实现A类定义了接口Inter中的内容,即((Inter)b).InterA()。 

            Console.WriteLine("直接从B类中调用b.InterA():"); 

            b.InterA(); 

            Console.WriteLine("直接从B类中调用((Inter)b).InterA():"); 

            ((Inter)b).InterA(); 

            Console.WriteLine("结束....."); 

            Console.ReadKey(); 

        } 

    } 


    interface Inter 

    { 

        void InterA(); 

    } 


    class A : Inter 

    { 

        public A() 

        { 

        } 


        public void AA() 

        { 

            Console.WriteLine("我是基类A的AA()方法\n"); 

        } 


        public virtual void AAA() 

        { 

            Console.WriteLine("我是基类A的AAA()方法,实现了Virtual\n"); 

        } 


        public void InterA() 

        { 

            Console.WriteLine("我是基类A,实现了接口Inter\n"); 

        } 


    } 


    class B : A 

    { 

        public B() 

        { 

        } 


        public new void AA() 

        { 

            Console.WriteLine("我是B类中用new来替换基类的AA()方法,但这不是继承的多态性\n"); 

        } 


        public override void AAA() 

        { 

            Console.WriteLine("我是B类中用override来替换基类的AAA()方法,这是继承的多态性\n"); 

        } 

    } 



相关阅读

云南选择外包网站建设的优势云南提升网站排名的两大要素云南优秀的商城网站都会拥有这几点云南APP与小程序之间的优劣对比云南给企业选择虚拟主机时的小建议云南网站推广的方式附带价格讲解云南国内外网站之间的差异在哪里云南网站内容更新的一些小建议云南如何得知企业网站是否该更新改版云南定制开发网站的好处在哪里MySQL的备份代码C++中删除文件夹及包含的文件的方法C中matlab集合操作方法模拟鼠标点击的方法代码vs 取文件大小 字节的方法Python连接数据库的API如何获取桌面路径的方法云南首个新餐饮云平台-翼通云新餐饮应疫情上线认识什么是js闭包Python3标准库:operator内置操作符的函数接口R语言入门:矩阵和数组的运算flutter的取得成功Flink 融合 Apollo,动态性升级 Flink 工作配备C3#中如何重写object虚方法应用Visual Studio Comunity 2019开发设计Unity C#脚本制作沒有全自动补齐的解决方案C#如何快速实现完整的INI文件读写类C#设定自定文件图标保持双击鼠标起动C#中实现保持文档拖拽开启的方式WPF:客户控制库应用資源词典的疑惑The finally block does not always execute in try finallyC#:checked unchecked初识DjangoEffective C#:基于任务的异步编程flex延展性盒模型合理布局你弄懂了吗?npm环境下如何安裝Vue.js熟悉vue目录结构初步学习Vue.js关于Vue.js的条件与循环vue循环语句使用v-for 指令Vue.js计算属性关键词:computedVue.js 监听属性:通过 watch 来响应数据的变化电脑浏览器中普遍的html词义化标识运用chrome的overrides实时调试网上jsnodejs对字符串数组开展base64变换和分析关于js中函数的默认值与动态参数arguments的总结jquery幻灯片淡入淡出组件封装node 上传照片到七牛jquery滑动效果的运动模块封装ES6:教你用js面向对象思维来实现 tab栏增删改查功能前端的js构造函数和原型通过H5C3完成响应式网页(VIVO官网)ES6中的class(类)如何正确使用pocsuite3Apache Solr JMX服务项目 RCE 系统漏洞重现SharePoint 总体目标浏览人群SharePoint 2016 建立空白页网站Apache Shiro 授权关于2020年JAVA大厂笔经面经分享idea激话实例教程(永久性)适用2019 3.1 测试Go技术性人民日报(2020java map中根据value排序取前nFlutter中的this和this.widget有何差别?应用pandas挑选出特定列值所相匹配的行关于C语言指针的学习总结Java面向对象C++中常见的涵数有哪些?python异常处理会使用到哪些关键字?java开发设计JSP学员成绩管理系统 源代码根据JSP+Servlet开发设计java商场平时智能管理系统源代码python3-cookbook认识python 初学者须知Java 比较器python3-cookbook我的潘多拉深入理解Java虚拟机中的垃圾回收云南旅游网站设计需要有那些内容云南商城网站的支付安全如何维护云南为什么我们都是不建议使用模板建站的原因云南网站建设之中最容易被忽视的读小细节云南企业网站要突显特色要建设那些栏目云南网站中不同的背景颜色代表什么云南网站优化之程序优化云南医疗行业网站建设的注意事项云南网站后期的运营费用组成部分云南手表行业网站设计要点C#与Windows Form之间正确传值方法代码C++中如何产生不重复的随机数非常使用的技巧:次要关键字排序方法Matlab字符串分割详情取模(mod)与取余(rem)是一样的吗?如何区分?matlab svd 和 eig 之间如何区分C#中使用PictureBox来播放视频的代码分享Linux中使用内存映射文件MMF实现大数据量导出时的内存优化关于3年多前端菜鸡的面试及知识梳理与总结PyCharm教程安装,Python开发人员的强有力专用工具《Java 8 in Action》Chapter 12:新的日期和时间API环球在线新闻中心杨主任对我司谭昱同志的表彰【第7篇】如何理解asp.net core 3.x Identity系统Visual Studio Code如何设置Blazor clientEF CORE中复杂类型的映射
/template/Home/Zkeys/PC/Static