1.C#基础篇-->封装、继承和多态
面向对象三要素:封装、继承和多态。正确理解这三个要素,才能在编程中建立面向对象的思想。
1.封装使用篇
作用:好的封装增加代码的可读性,易于维护。
什么情况下使用封装,封装的原则是?
1>功能相对独立,即一个方法仅处理一种业务逻辑。
2>可多处复用。例如代码中多处地方需要将时间格式化成yyyyMMdd,没必要每一处都去Format,最好对时间类型扩展一个方法,整站通用。
2.继承使用篇
作用:复用父类的属性和方法(继承类),限定对象属性和行为(接口继承)。
什么情况下使用继承?
1>不同的类拥有共同的属性和行为。
2>不同的类限定拥有相同的行为。
A:B,则A既是A类型又是B类型。A可以转换成B,限定仅能使用B的属性和方法。经过转换成B后的A,也可以再次转换成A类型,继续使用A类型的属性和方法。但是类型B无法转换成A类型。
类只能拥有一个父类,可以继承多个接口。
3.多态使用篇
定义:不同的类拥有相同的行为,这些行为又拥有自己各自的特点。
简单实现多态的条件:虚方法和重写
class Program
{
static void Main(string[] args)
{
People p1 = new Chinese();
p1.Speak(); People p2 = new English();
p2.Speak();
}
} public class People
{
public virtual void Speak()
{
Console.WriteLine("我是人类");
}
} public class Chinese : People
{
public override void Speak()
{
Console.WriteLine("我是中国人");
}
} public class English : People
{
public override void Speak()
{
Console.WriteLine("我是英国人");
}
}
查看代码
1.C#基础篇-->封装、继承和多态的更多相关文章
- day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态
Python之路,Day20 = 序列类型,绑定方法,类方法,静态方法,封装继承和多态 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要 ...
- Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态
一.反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...
- Java基础——面向对象(封装——继承——多态 )
对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...
- python基础-9__import__ 反射和面向对象基础 self 封装 继承(多继承顺序) 多态
一 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...
- objective-c自学总结(三)---面向对象的封装,继承与多态
面向对象的三大特性 封装 继承 多态 1.封装: 隐藏属性,方法或实现细节的过程称为封装 信息隐藏,隐藏对象的实现细节,不允许用户看到 将东西包装在一 然后以新的完整形式呈现出来 例如,两种或多种化学 ...
- [ Java学习基础 ] Java的继承与多态
看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...
- python 面向对象及封装继承和多态
######装饰器######装饰器的概念 - 装饰器的实现是函数里面嵌套函数;- 装饰器的本质是一个函数, 它可以让其他函数在不需要做任何代码改动的前提下增加额外的功能;- 装饰器需要传递一个函数, ...
- java 基础知识十 继承和多态
java 基础知识十 继承和多态 继承 1.定义: 继承是指声明一些类,可以再进一步声明这些类的子类,而子类具有父类已经拥有的一些方法和属性,这跟现实中的父子关系是十分相似的,所以面向对象把这种 ...
- C++之封装继承和多态
C++中非常重要的概念,尤其是相对于C语言而言,也是其具有如此高的工程使用性的重要原因. 封装 所谓封装是将某些东西隐藏起来,让外界无法直接使用,而必须通过某些特定的方式才能访问.也即是,将抽象得到的 ...
随机推荐
- Configuring Report Manager
Steps to configure and get Reports in Report manager. 1. Enable getting Reports in Report Manager. ...
- Check Box Select/Deselect All on Grid
The below function is to be used on a grid with multiple check boxes. Place the code behind a FieldC ...
- c#中操作word文档-三、MSDN文档
这是关于word读写的MSDN内容,基本所有的方法都可以在这上面找到 https://msdn.microsoft.com/zh-cn/library/office/ff837519.aspx
- MongoDb Replica Set中使用的地址
Unable to connect to a member of the replica set matching the read preference Primary 今天尝试使用MongoDB ...
- php如何实现页面回退的两种方法
发布:thatboy 来源:网络 [大 中 小] 你有没有遇到过这样的情况:表单出错而返回页面时,之前填写的信息全不见了.本文为大家介绍二种支持php页面回退的方法,供大家参考. 本文原始链接: ...
- phpcms 的实用相关接口,函数,调用方法
常用函数 , 打开include/global.func.php,下面存放一些公共函数view plaincopy to clipboardprint? strip_tags() 调用内容过滤html ...
- 【转】Spark性能测试报告
RDD可以很好地适用于支持数据并行的批量分析应用,包括数据挖掘,机器学习,图算法等,因为这些程序通常都会在很多记录上执行相同的操作.RDD不太适合那些异步更新共享状态的应用,例如并行web爬行器.因此 ...
- Delphi XE5 for android 使用 BITMAP STYLE DESIGNER 改变控件背景
一.BITMAP STYLE DESIGNER 工具集成在IDE开发工具的TOOLS菜单. 使用NEW 新建一个安卓样式.NEW—NEW ANDROID STYLE FOR FIREMONKEY. 这 ...
- ADO.NET 结构 集中数据库联接结构
MSDN 原文出处 https://msdn.microsoft.com/zh-cn/library/27y4ybxw.aspx .NET Framework 4.6 and 4.5 其他版本 以前, ...
- Partitioner没有被调用的情况
map的输出,通过分区函数决定要发往哪个reducer. 有2种情况,我们自定义的Partitioner不会被调用 1) reducer个数为0 这种情况,没有reducer,不需要分区 2) red ...