C#面向编程的三大特征
在面向对象的编程中,首先要清楚地理解面向对象编程的三个基本特征: 封装, 继承, 多态!
1、封装
更确切地说,是对象封装。就是每个对象都包含自己进行某种操作时所需要的所有信息,而不依赖于其他对象来完成该操作。
对象间的相互联系和相互作用过程主要通过消息机制得以实现。对象之间并不需要过多的了解对方内部的具体状态或运动规律。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显示地分开,其内部实现按其具体定义的作用域提供保护。类是封装的最基本单位。
属性property:属性是类、结构和接口的命名成员。它们提供了通过访问器accessor读、写或计算私有字段值的灵活机制。
属性是这样的成员:它们提供灵活的机制来读取编写或计算私有字段的值,可以像公共数据成员一样使用属性,但实际上他们是被称为访问器的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。
属性机制使得私有成员被隐藏,实现了封装的效果,良好的封装可以减少耦合,淡化类与类之间的紧密度依赖关系。
<例>
public class Dog
{
private string name;
public string Name
{
get{return name;}
set{name=value;}
}
public void bark()
{
}
}
2、继承
继承是一个现有的类创建新类的过程,现有的类称为父类,新类称为子类,子类可以访问父类的属性和方法。
继承符号: “:”实现继承操作,建立Is-a关系。
virtual:用于修饰方法、属性、索引器、或事件声明,并且允许在派生类中重写这些对象。
override:重写虚方法,将从父类继承的虚方法重写覆盖。
new关键字:在子类中声明一个名称和继承的方法名相同新的方法,如果声明子类的对象是父类的类型,将还会执行继承的父类的方法,override则会执行重写过的方法。
base:可以调用父类的成员方法,除了构造函数和析构函数,派生类将隐式的继承了直接基类的所有成员。也可以显示的调用父类的构造函数来构造子类的成员数据。
3、多态
多态性是指同名的方法可以在不同的类中具有不同的运行规律。
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行效果。多态性通过派生类覆写基类中的虚函数型方法来实现。多态性分为两种,一种是编译时的多态性,一种是运行时的多态性。(1)编译时的多态性:编译时的多态性是通过重载来实现的,对于非虚的成员来说,系统在编译时,根据传递的参数、返回的类型等信息决定实现何种操作。(2)运行时的多态性:运行时的多态性就是指直到系统运行时,才根据实际情况实现何种操作。C#中运行时的多态性是通过覆写成员实现。
1.声明:abstract class classname在类声明中使用abstract修饰符指示某个类只能是其他类的基类,标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
2.使用abstract关键字的注意事项:
(1)抽象类的特性:
成员:抽象类可以包含抽象方法、属性、索引器、事件,也可以包含非抽象的方法。
规则:抽象类不能实例化,不能用sealed修饰符修改抽象类,否则就意味这抽象类不能被继承。从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实现。
(2)抽象方法的特性:
抽象方法是隐式的虚方法,只允许在抽象类中使用抽象方法声明。因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号”{}”。
实现多态性的重载和覆写的比较:
简述抽象方法和虚方法的区别?
01.定义一个抽象类,用abstract 修饰
02.抽象方法不能有方法体,甚至连{}都不能有
03.抽象方法只能存在于抽象类中,但是抽象类中可以有非抽象方法
04.抽象类不能实例化
05.抽象类中抽象方法只是用来规定方法的形式(参数,返回值),约束子类方法的形式
06.抽象类中的抽象成员必须在子类中全部实现,除非子类也是抽象类
07.子类实现抽象方法的快捷键,Ctrl+.(没有输入法情况下 )
shift+alt+F10
08.抽象类不能用static修饰:如果是static,抽象就无法被继承,也就失去了抽象类本身的意义
重载的特点(两必须一可以):方法名必须相同,参数列表必须不相同,返回类型可以不相同。
覆写的特点(三相同):相同的方法名称,相同的参数列表,相同的返回值类型。
3.密封类:密封类不能被继承,密封方法重写基类的方法,但其本身不能在任何派生类中进一步重写。密封类只要是为类防止第三方未经授权的扩展自身的类。
C#面向编程的三大特征的更多相关文章
- oop(面向对象语言的三大特征):封装,继承,多态; (抽象),函数绑定
封装/隐藏 : 通过类的访问限定符实现的 private public 继承的意义之一:代码的复用 类的继承是指在一个现有类的基础上去构建一个新的类,构造出来的新类被称为派生类(子类),现有 ...
- JS面向(基于)对象编程--三大特征
抽象 在讲解面向对象编程的三大特征前,我们先了解什么叫抽象,在定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板).这种研究问题的方法称为抽象. 封装 什么是封装? ...
- JavaSE基础知识(5)—面向对象(5.4面向对象三大特征:封装、继承、多态)
面向对象编程具有三大特征: 封装 继承 多态 一.封装 1.好处 狭义的封装:也就是属性的封装,避免了任意赋值的危险,提高了数据的安全性! ①隐藏一个类中不需要对外提供的实现细节 ②使用者只能通过实现 ...
- Python31之类和对象1(三大特征:多封继——多疯子)
一.对象: Python即是面向对象的编程也是面向过程的编程语言,其内部可谓是无处不对象,我们所熟知的列表,字符串等工厂函数本质上都是对象.对象其实是对属性和方法的封装. 属性是对象的静态特征 方法是 ...
- Python面向对象初始(三大特征,多态,继承,封装)
Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...
- Java三大特征之继承(二)
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- 面向对象三大特征之封装与static——(Java学习笔记四)
面向对象 编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一 ...
- JAVA的三大特征 封装继承多态- 简单总结
简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...
- Javascript基于对象三大特征 -- 冒充对象
Javascript基于对象三大特征 基本概述 JavaScript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance ) ...
随机推荐
- soui中,列表控件动态高度的使用注意
1.listview的模板template中,需要增加defHeight属性,即默认高度,同时,不能出现itemHeight属性,否则动态高度会失效 2.数据适配器中,重写getViewDesired ...
- js 滚动的文字(走马灯)
// 滚动的文字 function marqueeScroll() { //var $target = $(".marquee_outer:visible"); if($(&quo ...
- ExtJS笔记 Ext.data.Types
This is a static class containing the system-supplied data types which may be given to a Field. Type ...
- 掌握Thinkphp3.2.0----CURD
TP-----CURD create()创建数据----整理数据 在数据库添加等操作之前,我们首先需要对数据进行创建.何为数据创建,就是接受提交过来的数据,比如表单提交的 POST(默认)数据.接受 ...
- oracle分组取第一条
SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC) rn,test1.* FROM test1) WHERE ...
- 一个修改过简化版的InputQuery
主要是觉得在单输入的情况下, 原来InputQuery输入框左边的文本太难看了...... function _InputQuery(const ACaption: string; const APr ...
- 从一道NOI练习题说递推和递归
一.递推: 所谓递推,简单理解就是推导数列的通项公式.先举一个简单的例子(另一个NOI练习题,但不是这次要解的问题): 楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可 ...
- imx6 DDR_Stress_Test
在调试DDR的时候,有时候需要更改参数.今天发现NXP提供了DDR Stress Test工具,用于DDR参数的校准. 参考链接 http://blog.csdn.net/qq405180763/ar ...
- Spring MVC配置
web配置 <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="ht ...
- C++学习笔记 指针与引用
指针与引用 1. 指针 (1) 指针是一个变量(实体),存储的是一个地址,指向内存的一个存储单元,指针可以为空 (2) 指针可以为空,在声明定义时可以不初始化 (3) 指针在初始化之后可以重新指向其 ...