【C#】总结二——面向对象
来源:互联网 发布:朱诺号变轨 知乎 编辑:程序博客网 时间:2024/06/08 06:17
前言
接着上篇文章的内容,本篇文章主要介绍c#总结第二部分——面向对象方面的内容,这也是学习c#过程中一个很基础的学习内容。
正文
面向对象
什么是面向对象?
面向对象(Object Oriented,简称OO)是指行为的主体是对象。
什么是面向对象编程?
面向对象编程(Object Oriented Programming,简称OOP)是指使用对象进行程序设计,以对象作为基本的结构单位。比如Smalltalk、EIFFEL、C++、C#、JAVA等。
为什么要面向对象?
解决程序可能存在的一些问题:不易维护,不易复用,不易扩展,灵活性差。
下面以“活字印刷术”为例(第一次印刷“大好河山”,第二次印刷“山清水秀”,第三次印刷“山清水秀 鸟语花香”),介绍一下面向对象的四种特性:
(1)可维护:关键词是“改”,只需更改变化的部分,即第二次在第一次刻好的四个字的基础上加刻“清”“水”“秀” 即可。
(2)可复用:关键词是“用”,重复使用相同的部分,即第二次使用第一次刻好的“山”。
(3)可扩展:关键词是“扩”,可以增加新的内容,即第三次可以在第二次的基础上加印四个字“鸟”“语”“花”“香”。
(4)灵活性好:关键词是“活”,可以灵活排列内容,即这些字的顺序是可以变化的。
面向对象VS面向过程
举一个简单的例子就可以很容易区分开这两者——下五子棋。
面向对象——研究主体:白棋子、黑棋子、棋盘、规则、下棋双方
面向过程——研究过程:游戏开始-白棋走-绘制画面-判断输赢-黑棋走--绘制画面-判断输赢-...(循环)-一方胜利-游戏结束
对象与类
概念
对象:是一个自包含的实体,用一组可识别的特性和行为来标识。(通俗的说,所有的东西都是对象,它可以被看到、听到、感觉到。。。)
类:具有相同的属性和功能的对象的抽象的集合。(比如说猫,狗,猪等它们不同于人,所以可以把它们抽象成一个“动物”类。)
延伸概念——实例与构造方法
实例:是一个真实的对象(猫是动物的实例,猫也是一个对象。)
实例化:创建对象的过程(创建猫这个实例的过程)
构造方法:也叫构造函数,是对类进行初始化,与类同名。
类的组成——属性,方法
区别
属性
方法
1
公开类成员字段的结构
定义类可以执行的操作
2
解决对象是什么
解决对象能做什么
3
封装对象数据
封装对象行为
4
获取对象字段的值
改变对象的行为
5
名词
动词
(1)属性格式
public 数据类型 属性名称 { get{return 字段;}//读访问器,为属性赋值 set{字段=value;}//写访问器,从属性获取值 }
举例 class Person { private int _age; public int Aget { get { return _age; } set { _age = value; } } }
(2)方法格式
访问修饰符/static 返回类型 方法名(参数列表) { 方法主体 }
举例 class Cat { public void SayHello()//定义无参无返回类型 { Console.WriteLine("hello world"); } static void main()//创建对象,调用方法 { Cat cat = new Cat(); cat.SayHello(); } }
面向对象的三大特性
封装
(1)定义:把事物抽象为类,对外接口暴露,将实现和内部数据隐藏。
每个对象都包含它能进行操作所需要的所有信息,因此对象不必依赖其他对象来完成自己的操作。
(2)好处:良好的封装能够减少耦合;
类内部的实现可以自由地修改;
类具有清晰的对外接口
继承
(1)定义:在原有类基础上定义一个新类,新类可以直接使用原有类的功能,也可以对这些功能进行扩展,原有类称为“父类”或“基类”,新类称为“子类”或“派生类”。继承体现了从一般到特殊的关系,子类具备父类和自己的双重特性。
(对象的继承指“is-a”的关系,如果两个对象A和B,可以描述成B是A,则表明B可以继承A。比如猫、狗与动物的关系,猫和狗都是动物的一种,因此他们之间就是继承关系。)
(2)内容:子类可以从父类中继承——方法、域、属性、事件、索引指示器。
构造方法不能被继承,只能被调用,调用时,使用base关键字。
(3)特点:子类拥有父类非private的属性和功能
子类具有自己的属性和功能(子类可以扩展父类没有的属性和功能)
子类还可以以自己的方式实现父类的功能(方法重写)
(4)优缺点:
优点:所有子类公共的部分都放在父类,使代码得到共享,避免了重复
使修改或继承而来的实现都较为容易
缺点:父类变,子类不得不变
破坏包装,父类实现细节暴露给子类
多态
(1)定义:表示不同的对象可以执行相同的操作,但要通过他们自己的实现代码来执行。通俗的说,就是一个行为可以以多种不同的状态实现,比如先定义一个动物叫的方法,猫、狗、猪都可以叫,但叫声不同。
(2)特点:子类以父类的身份出现
子类在工作时以自己的方式来实现
子类以父类的身份出现时,子类特有的属性和方法不可以使用
(3)实现:子类接替父类的类成员时,父类必须将该成员声明为虚拟的,通过在返回类型前加virtual实现;
子类可以选择使用override(方法重写/覆写),将父类实现替换为它自己的实现
(4)作用:把子类对象当做父类来看,可以屏蔽不同子类对象之间的差异,写成通用的代码,减少工作量,提高效率。
小结
每次总结都会发现学习过程中很多理解的不够或理解有误的地方,这就是总结提高我们能力的一个方面,珍惜每一次总结的过程,回头看,点点滴滴都是甘甜。
欢迎指正
0 0
- 【C#】总结二——面向对象
- C#——面向对象(二)
- VB.net总结(二)——面向对象
- 黑马程序员——JAVA 面向对象总结(二)
- 黑马程序员—面向对象知识总结(二)
- C++总结—面向对象
- C++总结—面向对象
- Java基础学习总结(二)—— 面向对象(类和对象)
- 【IOS 开发学习总结-OC-15】objective-c面向对象之——对象初始化
- java面向对象——二
- 黑马程序员——面向对象(二)
- Java——面向对象(二)
- 黑马程序员—java面向对象二
- 黑马程序员—面向对象(二)
- Java基础—面向对象(二)
- JAVA基础六—面向对象二
- JS面向对象(二)—继承
- 面向对象学习(二)—原型
- pojo编程模型+轻量级容器+控制反转讲解
- 在O(N lgK) 时间内合并K个有序链表
- 嵌入式Linux-周报告(First)
- CCS5导入工程时出错:Issues that may require your attention were encountered while importing the projects
- zzulioj1972: 杨八方的数学问题
- 【C#】总结二——面向对象
- c#学习笔记之十五 目前多线程执行函数的思路
- Java Spring整合Hibernate详细示例
- 如何优雅的选择默认字体(font-family)
- boost:asio信号量signal_set源码分析及使用
- 2016秋《高速电路EDA设计》基于FPGA的DDS信号产生实验
- X11 xcb 交叉编译
- 丑数
- java基础14(Javaoo9)——集合框架