图书馆网站建设情况宁波网页设计在宁勤区

web/2025/9/27 7:23:54/文章来源:
图书馆网站建设情况,宁波网页设计在宁勤区,视频分享网站怎么做,三亚网址之家本文转自#xff1a;http://blog.***/article.asp?id89介绍#xff1a;在本文中#xff0c;我将借一个DEMO讨论下接口和抽象类。抽象类和接口的的概念对初学面向对象编程的人来说#xff0c;总容易迷惑。所以#xff0c;我试着讨论下两者的理论并比较他们的使用。最后我将…本文转自http://blog.***/article.asp?id89 介绍    在本文中我将借一个DEMO讨论下接口和抽象类。抽象类和接口的的概念对初学面向对象编程的人来说总容易迷惑。所以我试着讨论下两者的 理论并比较他们的使用。最后我将演示下怎么用C#使用它们。 背景 一个抽象类在没有执行时就象一个接口一样。但在它们间有很多不同点下面就解释它们的概念比较他们的相似点和不同点。 什么是抽象类 一个抽象类是一种特殊的类它无法实例化。所以我们会问那我们为什么还需要一个无法实例化的类呢一个抽象类仅用来被继承的即它只 允许其他类继承它但自己不能实例化。对继承的子集抽象类的优势是增强了某些层次结构。简而言之它是一种契约使所有继承它的子类都带有 一样的层次结构或标准。 什么是接口 接口不是一个类。一个接口没有执行机制。它只能有一个信号换句话说它只能够定义方法名字方法怎么实现的一无所有。有一点是和抽象类 相似的它也具有一种契约接口被用来定义所有子类的结构或者说是定义一套子类方法。它们间的主要区别就是一个类能实现或执行多个接口 而只能从一个抽象类继承。在C#中不支持向C那样一个类可以多重继承但接口的运用从另外的角度看以用来实现了多继承。 接口和抽象类    当我们创建一个接口相当于我们基本上创建了一套没有执行的方法需要我们在子类中过载Overriden实现。这样做有一个非常显著的优势 它提供了一种方法使一个类可以成为两个类的一部分.    当我们创建一个抽象类相当于我们创建了一个基类它拥有一个或着多个完整的方法      但至少有一个方法没有实现即被声明为抽象方法。若所有的方法都没实现那它和接口的功能是一样的只是它还遵守无法被继承的规则。    抽象类的目的是提供了一个基本类定义了子类将如何设计允许程序员在子类中实现这些方法。 特点 接 口         抽象类 多继承 一个类能从几个接口继承 一个类只能继承于一个抽象类             实现方式 一个接口没有任何实现的代码只显示方法名 抽象类可以提供完整的方法实现的代码 核心与外围 接口用来定义类的外围功能. 比如人类和交通工具两个类都能从IMOVABLE接口继承。   抽象类多用来定义一个类的核心层 使用场合 如果很多实现都共享一些方法则       用接口比较 如果很多实现使用同一系列方法使用一样的属性则用抽象类较好 速度   要求更多的时间去找到实际的子类实现的方法 比较快 功能扩展性 如果我们要给接口添加一个方法我们要捕捉所有使用该接口的实现子类并分别添加一个新的方法并实现它. 如果我们要给抽象类添加一个新的方法我们可以在抽象实现也可以在子类实现 代码实例 用代码来实现会更简单些。这里有一个Employee抽象类和一个IEmployee接口。我会用实现的对象分别继承于Employee和IEmployeeEmp_Fulltime继承于EmployeeEmp_Fulltime2继承于IEmployee。 在测试中我创建两者的实例并设置他们的属性调用一个calculateWage的方法。 Abstract Class Employee 1 using System; 2 3 namespace AbstractsANDInterfaces 4 { 5     /// 6 7     /// Summary description for Employee. 8 9     /// 10 11     12     public abstract class Employee 13     { 14         //we can have fields and properties 15 16         //in the Abstract class 17 18         protected String id; 19         protected String lname; 20         protected String fname; 21 22         //properties 23 24         public abstract String ID 25         { 26             get; 27             set; 28         } 29 30         public abstract String FirstName 31         { 32             get; 33             set; 34         } 35         36         public abstract String LastName 37         { 38             get; 39             set; 40         } 41         //completed methods 42 43         public String Update() 44         { 45             return Employee id 46                       lname fname 47                       updated; 48         } 49         //completed methods 50 51         public String Add() 52         { 53             return Employee id 54                       lname fname 55                       added; 56         } 57         //completed methods 58 59         public String Delete() 60         { 61             return Employee id 62                       lname fname 63                       deleted; 64         } 65         //completed methods 66 67         public String Search() 68         { 69             return Employee id 70                       lname fname 71                       found; 72         } 73 74         //abstract method that is different 75 76         //from Fulltime and Contractor 77 78         //therefore i keep it uncompleted and 79 80         //let each implementation 81 82         //complete it the way they calculate the wage. 83 84         public abstract String CalculateWage(); 85         86     } 87 } 88 Interface Employee  1 using System; 2 3 4 namespace AbstractsANDInterfaces 5 { 6     /// summary 7 8     /// Summary description for IEmployee. 9 10     /// /summary 11 12     public interface IEmployee 13     { 14         //cannot have fields. uncommenting 15 16         //will raise error! 17 18 //        protected String id; 19 20 //        protected String lname; 21 22 //        protected String fname; 23 24 25         //just signature of the properties 26 27         //and methods. 28 29         //setting a rule or contract to be 30 31         //followed by implementations. 32 33         String ID 34         { 35             get; 36             set; 37         } 38 39         String FirstName 40         { 41             get; 42             set; 43         } 44         45         String LastName 46         { 47             get; 48             set; 49         } 50         51         // cannot have implementation 52 53         // cannot have modifiers public 54 55         // etc all are assumed public 56 57         // cannot have virtual 58 59 60         String Update(); 61 62         String Add(); 63 64         String Delete(); 65 66         String Search(); 67 68         String CalculateWage(); 69     } 70 } 71 Inherited Objects Emp_Fulltime:   1 using System;   2   3 namespace AbstractsANDInterfaces   4 {   5     ///   6   7     /// Summary description for Emp_Fulltime.   8   9     /// 10 11       12     //Inheriting from the Abstract class 13 14     public class Emp_Fulltime : Employee 15     { 16         //uses all the properties of the 17 18         //Abstract class therefore no 19 20         //properties or fields here! 21 22 23         public Emp_Fulltime() 24         { 25         } 26 27 28         public override String ID 29         { 30             get 31             { 32                 return id; 33             } 34             set 35             { 36                 id value; 37             } 38         } 39         40         public override String FirstName 41         { 42             get 43             { 44                 return fname; 45             } 46             set 47             { 48                 fname value; 49             } 50         } 51 52         public override String LastName 53         { 54             get 55             { 56                 return lname; 57             } 58             set 59             { 60                 lname value; 61             } 62         } 63 64         //common methods that are 65 66         //implemented in the abstract class 67 68         public new String Add() 69         { 70             return base.Add(); 71         } 72         //common methods that are implemented 73 74         //in the abstract class 75 76         public new String Delete() 77         { 78             return base.Delete(); 79         } 80         //common methods that are implemented 81 82         //in the abstract class 83 84         public new String Search() 85         { 86             return base.Search(); 87         } 88         //common methods that are implemented 89 90         //in the abstract class 91 92         public new String Update() 93         { 94             return base.Update(); 95         } 96         97         //abstract method that is different 98 99         //from Fulltime and Contractor 100 101         //therefore I override it here. 102 103         public override String CalculateWage() 104         { 105             return Full time employee 106                   base.fname is calculated 107                   using the Abstract class; 108         } 109     } 110 } 111 Emp_Fulltime2   1 using System;   2   3 namespace AbstractsANDInterfaces   4 {   5     ///   6   7     /// Summary description for Emp_fulltime2.   8   9     /// 10 11     12     //Implementing the interface 13 14     public class Emp_fulltime2 : IEmployee 15     { 16         //All the properties and 17 18         //fields are defined here! 19 20         protected String id; 21         protected String lname; 22         protected String fname; 23 24         public Emp_fulltime2() 25         { 26             // 27 28             // TODO: Add constructor logic here 29 30             // 31 32         } 33 34         public String ID 35         { 36             get 37             { 38                 return id; 39             } 40             set 41             { 42                 id value; 43             } 44         } 45         46         public String FirstName 47         { 48             get 49             { 50                 return fname; 51             } 52             set 53             { 54                 fname value; 55             } 56         } 57 58         public String LastName 59         { 60             get 61             { 62                 return lname; 63             } 64             set 65             { 66                 lname value; 67             } 68         } 69 70         //all the manipulations including Add,Delete, 71 72         //Search, Update, Calculate are done 73 74         //within the object as there are not 75 76         //implementation in the Interface entity. 77 78         public String Add() 79         { 80             return Fulltime Employee 81                           fname added.; 82         } 83 84         public String Delete() 85         { 86             return Fulltime Employee 87                         fname deleted.; 88         } 89 90         public String Search() 91         { 92             return Fulltime Employee 93                        fname searched.; 94         } 95 96         public String Update() 97         { 98             return Fulltime Employee 99                         fname updated.; 100         } 101         102         //if you change to Calculatewage(). 103 104         //Just small w it will raise 105 106         //error as in interface 107 108         //it is CalculateWage() with capital W. 109 110         public String CalculateWage() 111         { 112             return Full time employee 113                   fname caluculated using 114                   Interface.; 115         } 116     } 117 } 118 Code for testing 1 private void InterfaceExample_Click(object sender, 2                                 System.EventArgs e) 3 { 4     try 5     { 6 7         IEmployee emp; 8 9         Emp_fulltime2 emp1 new Emp_fulltime2(); 10         //has to be casted because of the interface! 11 12         emp (IEmployee) emp1; 13         emp.ID 2234; 14         emp.FirstName Rahman ; 15         emp.LastName Mahmoodi ; 16         //call add method od the object 17 18         MessageBox.Show(emp.Add().ToString()); 19         20         //call the CalculateWage method 21 22         MessageBox.Show(emp.CalculateWage().ToString()); 23 24 25     } 26     catch(Exception ex) 27     { 28         MessageBox.Show(ex.Message); 29     } 30 31 } 32 33 private void cmdAbstractExample_Click(object sender, 34                                    System.EventArgs e) 35 { 36 37     Employee emp; 38     //no casting is requird! 39 40     emp new Emp_Fulltime(); 41     42 43     emp.ID 2244; 44     emp.FirstName Maria ; 45     emp.LastName Robinlius ; 46     MessageBox.Show(emp.Add().ToString()); 47 48     //call the CalculateWage method 49 50     MessageBox.Show(emp.CalculateWage().ToString()); 51 52 } 53 结论 我已经解释了接口和抽象类的不同点并用一个Demo Project 讲解了他们实现的不同点.转载于:https://www.cnblogs.com/feima-lxl/archive/2008/04/25/1170971.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

湖州 外贸网站建设一个服务器可以做多个网站吗

首先,我们先了解一下登录方式的演变过程,大致可以分为三个阶段。分别是账号密码登录、短信验证码登录和一键登录。 阶段一:账号密码登录 账号密码登录是一种常见的用户身份验证方式,用户需要输入一个唯一的账号和对应的密码来登…

策划行业网站WordPress贴图库图片接口

比如,前端使用vue,后端使用abp框架 则首先需要一个统一的中央认证服务,来给每个后端服务通信以验证用户凭据,并返回访问令牌, 中央认证服务保存各自后端的令牌,后端服务使用JWT或其他机制验证令牌的有效性。 1、前端登录请求中央认证服务,返回认证服务自己的令牌 2、…

一个网站有多大营口软件开发

目录 图的遍历概念: 图的广度优先遍历(BFS): 代码实现如下: 测试如下: 注意: 图的深度优先遍历(DFS): 代码实现如下: 测试如下&#xff1…

蒲县网站建设销售管理系统排名

一. 内容简介 韩老师多目标优化:多目标粒子群算法 视频: 【2022.2.5韩老师十七课时(中)多目标优化:多目标粒子群算法】 https://www.bilibili.com/video/BV1eS4y157Xg/?share_sourcecopy_web&vd_source7b377d4a833a67013df5…

网站开发概述福建建设执业资格中心网站

Python中的堆(Heap):高级数据结构解析 堆是一种基于树结构的数据结构,具有高效的插入和删除操作。在本文中,我们将深入讲解Python中的堆,包括堆的基本概念、类型、实现方式、应用场景以及使用代码示例演示…

网站建设中 html5 模板下载推广引流的方法

1.什么是IOCP IOCP(Input Output Completion Port)输入输出完成端口。其实就是基于重叠I/O的一种改进的模型。 重叠I/O具有缺点:重复调用非阻塞模式的accpet函数和以进入alertablewait状态为目的的SleepEx函数会影响程序性能。 而IOCP提供…

洛阳有哪些做网站的公司wordpress只显示置顶文章

第十二届蓝桥杯省赛Java B组真题 编程题 1. 杨辉三角问题描述 2. 时间显示问题描述 3. 双向排序问题描述 4. 括号序列问题描述分析 5.砝码称重分析 1. 杨辉三角 问题描述 著名的杨辉三角形,按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数…

音箱厂家东莞网站建设专做农产品跨境的网站有

很久没有发帖了,很是惭愧,因此给各位使用EXT.NET的朋友献上一份礼物。 本篇主要讲述页面设计与效果,下篇将讲述编码并提供源码下载。 系统首页设计往往是个难点,因为往往要考虑以下因素: 重要通知系统功能菜单快捷操作…

北京中小企业网站建设外贸服装商城网站建设

昨天在班里测试了下,检测他们数据库学的怎么样,看他们平时在课堂上的互动挺棒。看了下题,不是很难,满怀着愉悦的心情去打印了50份,挨个分发下去,由于我18级那边有课要上,所以这边的考试就辛苦王…

WordPress里面自定义功能优化就是开除吗

1、命令的基本格式 对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务、开放更多的端口,这对服务器的稳定性和安全性都有负面影响。其实,服务器是一个连显示器都没有的家伙,要图形界面干什么&#xff…

怎么设置自己的网站安徽优化网站

19级青鸟3班 刘文瑞以前因为经常玩游戏的原因,导致我对软件特别感兴趣,但是由于学习到的东西不多,经常是在玩游戏,真正能运用到计算机上的知识实在是少的可伶。像是代码之类的东西,以前只是听说过,但是一点…

合肥高端网站建设cnfg冰雪复古传奇手游官网

四、音乐播放器 任务要求: 设计制作一个简易音乐播放器(通过手柄板上的蜂鸣器发声,播放2到4首音 乐),同时LED模块闪烁,给人视、听觉美的感受。 评分细则: 按下播放按键P15开始播放音乐&#x…

源码制作网站广州白云区最新新闻

priority_queue模拟实现 1. priority_queue介绍2. priority_queue使用2.1 priority_queue显示定义2.2priority_queue接口使用 3. 仿函数4. priority_queue模拟实现4.1 向上调整算法4.2 向下调整算法4.3 实现priority_queue的接口4.4 使用[仿函数](https://legacy.cplusplus.com…

营销软件站放单网站

Glance是为虚拟机的创建提供镜像的服务,我们基于Openstack是构建基本的IaaS平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,Glance服务就是为该选择提供不同的操作系统镜像。Glance提供Restful API可以查询虚拟机镜像的me…

保定模板建站平台如何去除痘痘有效果

cognito在本文中,我们将研究使用OAuth协议通过Amazon Cognito对单页应用程序(使用Vue.js构建)进行身份验证。 在上一篇文章中,我们将服务器端应用程序与Amazon Cognito集成在一起。 搭建单页应用程序 我们将使用vue-cli创建一个空…

专做健身餐的网站wordpress 说说碎语

每日OJ —— 144. 二叉树的前序遍历 1.题目:144. 二叉树的前序遍历2.方法讲解2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:144. 二叉树的前序遍历 2.方法讲解 2.1.算法讲解 1.首先如果在每次每个节点遍历的时候都去为数组开辟空间,这样…

网站建设从哪入手免费word在线编辑

一、创建vue项目步骤 要创建一个Vue Element UI的项目,你可以按照以下步骤进行操作: 1.确保你已经安装了Node.js和npm(Node.js的包管理器)。你可以在命令行中运行以下命令来检查它们是否已经安装: node -vnpm -v2.使…

中国十大网站排名wordpress is admin

目标 我们学习正则化之前应该先了解我们为什么要用正则化 。正则化解决了什么问题 。我们讲正则化之前 ,先了解一个概念–》过拟合 过拟合 数据增强 L1和L2正则化 Dropout 注意:Dropout是不适合用在卷积神经网络的 提前终止 一般的做法是:记…

网站技术可行性网站怎么做数据转移

北京电子科技学院(BESTI) 实 验 报 告 封 面 课程:信息安全系统设计基础 班级:1452 姓名: 黄亚奇 祁玮 学号: 20145222 20145213 成绩: 指导教师:娄嘉鹏 实验日期:2016.1…