关于我们

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

< 返回新闻公共列表

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"); 

        } 

    } 



相关阅读

云计算的三个优点选取小程序服务商时的注意事项不同数据库的不同区别什么是VPS主机它的优势是什么?你知道5G的优点和缺点吗?云南三级分销商城开发的目的和对企业的价值云南网站优化的3个方面和网页的优化我们晋级拉!!!云南网站链接维护的具体方法云南网站应该如何做优化云南网站维护的主要内容云南云服务器和虚拟主机的操作区别云服务器部署和注意点云南服务网器托管应该选择怎样的机房云南虚拟建设网站主机的优点和缺点云服务器和物理服务器的区别云服务器有哪些优势C# List用法 List介绍C#和Java有什么不同PHP的优点和缺点智慧新餐饮和传统餐饮的区别云数据库对比传统数据库有哪些优点裸金属服务器是什么它的作用是什么白盒测试的特点js中添加scriptjs中[]、{}、()的用法和区别php 字符串的整型转换ipa如何安装到苹果手机邓白氏码是什么?iOS开发者账号到期续费教程在C#中有哪些引用类型和值类型小程序搭建时需要准备些什么云数据库对比传统数据库的优势什么样的企业适合SEMjs中的常见错误C#数据类型转换字符串与数值之间的转换C#的几种循环遍历方式物联网是什么它和互联网又有什么区别?云南网站建设时应该注意些什么云计算是什么?它能干些什么?展望未来5G会给我们的生活带来哪些影响C#常见的几种报错类别C#的学习流程有哪些dedecms 绑定二级域名的正确方法SEM是什么它和SEO之间是什么关系?云南新餐饮料模式是如何运行的?云南网站建设初期应该注意哪些问题云南网站建设中原创文章对网站起什么作用Javascript中如何中断forEach循环云南零售小程序前景怎么样?如何优化WEB应用数据库访问慢的问题?Javascript中用let和var声明变量的区别是什么redis 的主从复制和哨兵?递归和迭代有何区别?<input> 标签的 readonly 属性怎么用?云南网站建设中网页版商城如何保证网站安全云南企业官网如何推广云南企业网站建设为什么把文章类型的栏目排在前面云南餐饮小程序能带给餐饮业什么?云南网站建设需要注意什么地方云南云服务器配置如何选择合适的云南网站建设和网站设计有何区别?云南网站建设—企业官网的好处在哪?云南做小程序的优势在哪?为什么建议做小程序?网站为什么要配置ssl证书?网站为什么要做seo,做seo有什么好处?微信小程序_企业付款到零钱 API 开发如何利用缓存提高asp.net网站访问速度中小型企业如何选择服务器配置?如何优化中小型企业网站C#.net做网站后台 需要记录日志基于asp.net企业门户网站设计霓裳民族服装seo优化分析建议Javascript的函数封装认识及使用Ajax请求中data与后端的交互有哪几种方法JavaScript如何实现组合模式???SQL之子查询的基本用法有哪些?什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试?C# 引入委托的目的是什么c# 委托的本质是什么C# DataGridView添加新行的2个方法C#支付宝扫码支付代码完整版c# MVC 微信支付教程系列之扫码支付代码实例Redis基础通用操作指令有哪些?String、StringBuffer和StringBuilder的各自用法常见的一些Dos命令有哪些?如何在C#中复制一个Windows窗体类前端js中的运算符的种类,=、==与===的有何区别?网站前端怎么设置页面禁止转载?解决XSS脚本攻击恶意代码的方法你知道?javascript 之 apply()、call() 探索net core实现跨域ASP.NET Core程序部署到LinuxASP.NET Core使用AutoMapper.NET Core:处理全局异常.NET Core在ASP.NET Core WebApi中使用CookieASP.NET Core:ASP.NET Core中使用NLog记录日志如何重启iis服务器SQL Server代理服务无法启动怎么办js 判断手机版与PC版自适应跳转升级版 PC版手机版界面对应跳转
/template/Home/Zkeys/PC/Static