- 浏览: 111213 次
- 性别:
- 来自: 昆明
-
文章分类
- 全部博客 (151)
- 120D02 (5)
- 直升机 (1)
- 我的技术资料收集 (82)
- 的技术资料收集 (4)
- .NET Solution (2)
- ASP.NET (1)
- Linq to sql (1)
- 数据库技术(MS SQL) (2)
- 架构/设计 (1)
- 敏捷/持续集成 (1)
- C#.NET开发 (1)
- Matlab开发 (1)
- WinForm开发 (1)
- 开源技术 (1)
- jQuery (1)
- 我的博文 (4)
- js (2)
- android (2)
- 9. 读书笔记 (1)
- CSS3 (1)
- HTML5 (1)
- JavaScript (5)
- 移动开发 (2)
- 编程心得 (1)
- Linux操作系统 (1)
- (BI)商业智能 (1)
- IOS (1)
- Windows Phone (2)
- C# API (1)
- JQuery系列 (1)
- TFS (1)
- C# (2)
- ExtJs (1)
- .NET (1)
- Nginx (1)
- WCF学习笔记 (1)
- Computer Graphic (1)
- IT产品 (1)
- 工具分享 (1)
- MySelf (1)
- C#专栏 (1)
- 管理 (1)
- 基于Oracle Logminer数据同步 (1)
- 日常 (1)
- 实用工具 (1)
- 网页设计 (1)
- avalon (1)
- flash (1)
- DDD (1)
- 01 技术Android (1)
- WCF (1)
- selenium (1)
最新评论
-
464410531:
三国杀。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ...
实用的职场宝典:不提拔你,就因为你只想把工作做好
一、访问修饰符的使用域
public可以在类的内部、子类、其他类以及程序中调用
internal 可以在类内部、子类、其他类中调用,不能在程序集中调用
protected可以在类内部、子类中调用,不可在其他类以及程序集中调用
private只可在定义的类内部调用,不可在子类、其他类以及程序集中调用
二、继承:将上一层次的东西选择性的传递下来,从而提高代码的重用性,降低了程序的复杂性
继承的两个特性:传递性、单根性
1、继承类:默认继承(system.object)
1)单向继承,一个子类只能派生自一个类,具有单根性,可继承多个接口
2)定义语法:
访问修饰符 class 子类名 :派生类名{代码片段}
3)作用:可增加、修改、替换类中的方法对类进行扩充
2、调用积累构造函数
a)默认的构造:进行实例化时需遵循的规则:先调用基类无参构造,再调子类构造
b)base关键字调用基类构造:
语法:
调用基类构造:
子类构造函数(参数列表):base(参数列表)
调用基类方法或属性:
base.属性/方法
好处:提高数据安全性
调用顺序:基类构造,子类构造
注:base关键字访问基类成员不可在静态方法 ,不能访问基类的私有成员
3、继承的传递性:不限定传递次数,若不想该类进行派生可使用sealed定义密封类
4、隐藏类成员与访问:用new关键字显式的隐藏基类继承下来的成员
5、继承规则
1)可传递
2)派生类是对基类的扩展
3)基类中的构造函数和析构函数以及访问修饰符为private的成员不可被继承
4)若子类定义与基类相同的新成员,基类成员会被覆盖,在子类中不可访问基类中被覆盖的相关成员
5)类中可定义虚方法、属性,子类中重载,实现
6、父类中的成员如果采用private修饰符,它将作为私有成员,其他任何类都无法访问。
7、C#中提供了另一种访问修饰符protected,被这个访问修饰符修饰的成员允许被其子类访问,而不允许其他非子类访问。
二、多态: 同一操作作用于不同类的实例,不同的类将进行不同的解释,最后产生不同的执行结果。
1、多态的分类:重载重写
重载:方法名相同,参数类型、个数、顺序不同 使用关键字new
重写:在基类中定义虚方法,在子类中使用override对该方法进行重写
虚方法关键字:virtual
在父类中定义虚方法的语法: 访问修饰符 virtrul 返回类型 方法名称(参数列表)
{
//方法初始实现
}
|
注意:虚方法实现后,如果子类没有重写,调用的是基类的默认实现
在子类中重写父类虚方法: 访问修饰符 override 返回类型 方法名称(参数列表)
{
//方法初始实现
}
子类重写基类的虚方法,也就是将 virtual 换为 override ,添加自己的实现,访问修饰符、类型、方法签名和参数列表都不变。
|
关键字override:子类中修改基类方法的实现,基类中必须有virtual方法或abstract方法
2、virtual关键字不仅可以定义虚方法,也可定义其他虚成员,让子类进行重写
1)基类虚成员呗重写时,需使用相同访问修饰符
2)类成员被虚化了则不能被抽象化,virtual与abstract 同时出现在同一成员上
3)new virtual static关键字不能与override同时使用
4)子类使用new关键字隐藏基类成员,则该成员声明时不用override关键字
virtual的规则
三、里氏替换原则:子类可以替换基类,并出现在基类能够出现的任何地方,基类不能替换子类
例:Student为Person类派生出来的子类
Student is a Person
Person p=new student();
发表评论
-
Javascript:猜猜弹出的是啥?为啥? - 幸福框架
2013-06-28 13:33 447原帖地址:http://www.cnblogs.com/hap ... -
C#中WindowsForm常见控件的运用 -- - 李晓峰
2013-06-28 13:27 1766原帖地址:http://www.cnblogs.com/liy ... -
海量数据处理利器之Hash——在线邮件地址过滤 - MyDetail
2013-06-27 12:00 672原帖地址:http://www.cnblo ... -
ASP.NET MVC 4 for Visual Studio 2010 下载地址 - 张鸿伟
2013-06-27 11:48 764原帖地址:http://www.cnblogs.com/wei ... -
【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化 - r01cn
2013-06-26 11:00 927原帖地址:http://www.cnblogs.com/r01 ... -
[珠玑之椟]估算的应用与Little定律 - 五岳
2013-06-26 10:54 651原帖地址:http://www.cnblogs.com/wuy ... -
30行,金额转人民币大写的代码 - 史蒂芬.王
2013-06-26 10:42 1038原帖地址:http://www.cnblogs.com/ste ... -
从银行的钱荒看一个公司的团队建设 产品线过多最终导致最赚钱的项目面临破产 - James Li
2013-06-26 10:36 646原帖地址:http://www.cnblogs.com/Jam ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 13:39 553原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 13:33 628原帖地址:http://www.cnblo ... -
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" - 量子计算机
2013-06-25 13:27 883原帖地址:http://www.cnblogs.com/DSh ... -
一步一步将自己的代码转换为观察者模式 - 文酱
2013-06-23 11:36 630原帖地址:http://www.cnblo ... -
iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance) - VicStudio
2013-06-23 11:30 560原帖地址:http://www.cnblogs.com/vic ... -
记录asp.net在IE10下事件丢失排错经过 - Adming
2013-06-23 11:24 727原帖地址:http://www.cnblogs.com/wea ... -
记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客! - 三生石上
2013-06-23 11:18 812原帖地址:http://www.cnblogs.com/san ... -
3、使用Oracle Logminer同步Demo
2013-06-19 10:33 583原帖地址:http://www.cnblogs.com/shi ... -
算法实践——数独的基本解法
2013-06-19 10:27 1468原帖地址:http://www.cnblogs.com/gre ... -
简单实现TCP下的大文件高效传输
2013-06-19 10:21 705原帖地址:http://www.cnblogs.com/sma ... -
avalon - 初步接触
2013-06-18 10:06 796原帖地址:http://www.cnblogs.com/aar ... -
Nginx学习笔记(一) Nginx架构
2013-06-18 09:59 543原帖地址:http://www.cnblogs.com/cod ...
相关推荐
JAVA面向对象之多态.pdf
本文主要给大家介绍的是关于C++面向对象之多态的实现和应用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 多态 大家应该都听过C++三大特性之一多态,那么什么多态呢?多态有什么用...
在面向对象编程中,多态指的是一个对象可以表现出多种形态,这意味着一个类的对象不仅可以表现为它本身,还可以表现为它的父类或者它实现的接口类型。通过这种方式,我们可以编写更加通用的代码,而不必关心具体对象...
本文实例讲述了Python面向对象之多态原理与用法。分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 实现代码的重用,相同...
一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。 所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求。 简单的说,一个类拥有其父类、和已实现接口的身份。
C#面向对象编程-多态习题[整理].pdf
面向对象编程是Java的核心特性,其中封装、继承和多态是三大基石。在这个主题中,我们将专注于"多态"这一特性,它是Java编程灵活性和可扩展性的重要体现。 多态(Polymorphism)在希腊语中意为“多种形态”,在编程...
计算机后端-PHP视频教程. php之面向对象29 多态(选学).wmv
### 2024面向对象高级多态接口HM #### 一、多态 ##### 1.1 多态概述 多态是面向对象编程语言中的一个重要特性,它允许使用一个接口代表不同的类的行为。多态的核心在于继承与实现机制,并且依赖于方法的重写。在...
在.NET框架中,面向对象编程(Object-Oriented Programming,OOP)是一种强大的软件开发范式,它基于类和对象的概念,以及封装、继承、多态等核心特性。本实践项目名为“动物练习”,旨在通过模拟不同类型的动物来...
多态是面向对象编程(OOP)的三大特征之一,它在软件设计与开发中扮演着核心角色。本篇文章首先明确了多态的概念,接着通过PHP语言中的具体实例,阐述了多态的使用场景以及它带来的好处。通过多种实现方法的比较,这...
JAVA面向对象---多态(完结)
Educoder题目:Java面向对象 - 封装、继承和多态答案解析
面向对象编程是Java的核心特性之一,它通过封装、继承和多态等概念来构建复杂的软件系统。本实验报告主要探讨了多态性这一关键概念,通过设计一系列类及其子类来实现具体的功能。 首先,实验设计了一个名为`Person`...
C语言实现对象编程之多态代码.rar 在C语言中还可以实现更深入的面向对象编程多态特性。例如:使用接口(interface)包含多个指向函数的指针,这样就可以实现操作的"多态性"。 在面向对象语言C++的实现上,使用了虚...
在面向对象编程中,抽象方法和虚方法常常一起出现,它们共同构成了多态的基础。抽象类通常包含抽象方法,定义了一个通用的接口,而虚方法则允许子类对这些接口进行具体实现。通过这样的设计,我们可以创建出强大的...