在面向对象的编程中,首先要清楚地理解面向对象编程的三个基本特征: 封装, 继承, 多态!

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#面向编程的三大特征的更多相关文章

  1. oop(面向对象语言的三大特征):封装,继承,多态; (抽象),函数绑定

    封装/隐藏 : 通过类的访问限定符实现的   private    public 继承的意义之一:代码的复用 类的继承是指在一个现有类的基础上去构建一个新的类,构造出来的新类被称为派生类(子类),现有 ...

  2. JS面向(基于)对象编程--三大特征

    抽象 在讲解面向对象编程的三大特征前,我们先了解什么叫抽象,在定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板).这种研究问题的方法称为抽象. 封装 什么是封装? ...

  3. JavaSE基础知识(5)—面向对象(5.4面向对象三大特征:封装、继承、多态)

    面向对象编程具有三大特征: 封装 继承 多态 一.封装 1.好处 狭义的封装:也就是属性的封装,避免了任意赋值的危险,提高了数据的安全性! ①隐藏一个类中不需要对外提供的实现细节 ②使用者只能通过实现 ...

  4. Python31之类和对象1(三大特征:多封继——多疯子)

    一.对象: Python即是面向对象的编程也是面向过程的编程语言,其内部可谓是无处不对象,我们所熟知的列表,字符串等工厂函数本质上都是对象.对象其实是对属性和方法的封装. 属性是对象的静态特征 方法是 ...

  5. Python面向对象初始(三大特征,多态,继承,封装)

    Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...

  6. Java三大特征之继承(二)

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  7. 面向对象三大特征之封装与static——(Java学习笔记四)

    面向对象     编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一 ...

  8. JAVA的三大特征 封装继承多态- 简单总结

    简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...

  9. Javascript基于对象三大特征 -- 冒充对象

    Javascript基于对象三大特征 基本概述 JavaScript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance ) ...

随机推荐

  1. JSF标签的使用2

    n  事件监听器是用于解决只影响用户界面的事件 Ø  特别地,在beans的form数据被加载和触发验证前被调用 •    用immediate=“true”指明这个行为不触发验证 Ø  在监听器调用 ...

  2. 深入浅出Android App耗电量统计

    前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有.平时在手机“设置- 电量”看到的数据 就是系统调用内 ...

  3. Oracel EBS - Search Report by Response & Group

  4. 多边形碰撞 -- SAT方法

    检测凸多边形碰撞的一种简单的方法是SAT(Separating Axis Theorem),即分离轴定理. 原理:将多边形投影到一条向量上,看这两个多边形的投影是否重叠.如果不重叠,则认为这两个多边形 ...

  5. viewport

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale= ...

  6. Public DNS (公共域名解析服务)

    114DNS 服务IP:114.114.114.114, 114.114.115.115 拦截 钓鱼病毒木马网站:114.114.114.119, 114.114.115.119 拦截 色情网站:11 ...

  7. 查找Maven JAR坐标

    http://mvnrepository.com/ http://search.maven.org/

  8. gcc编译命令行依赖库的指定顺序

    gcc链接过程中定义了三个集合:可重定位目标文件集合E.未解析符号集合U和已定义符号集合D,链接基本流程如下: 1) 按命令行指定顺序依次处理每个目标文件和库文件: 2) 如果为目标文件,将其加入集合 ...

  9. js 事件大全

    Js事件大全一般事件 事件 浏览器支持 描述onClick IE3|N2|O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClick IE4|N4|O 鼠标双击事件onMouseDo ...

  10. 著名的sql注入问题-问题的原因分析及总结

    Statement安全漏洞(sql注入问题)问题展示: 首先我的Mysql数据库中有一张users表,如下图所示 /** * 根据用户名查询用户 * @param username 需要查询的用户名 ...