------------------------
★OOP三大特征:
封装:数据、方法
继承:派生类继承父类一切非私有(private)数据、方法
多态:重载、重写
------------------------
★class与object关系
类将一些数据封装起来,并给出一个高效率的接口。对象是通过类来抽象描述,描述他

们的特征与行为。对象是类的一个实例。但是并不是所有的类都是用来描绘对象的,如

果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
------------------------
★虚基类-带纯虚函数的类
    所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用

来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就

是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,

是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个

图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是

不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,

它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以

表征抽象概念的抽象类是不能够实例化的
------------------------
★c# 构造函数
1、缺省构造函数:
 class TestClass
 {
  public TestClass(): base() {} // 由CLR提供
 }

2、实例构造函数
  实例构造函数是实现对类中实例进行初始化的方法成员
3、静态构造函数
    静态构造函数是实现对一个类进行初始化的方法成员。它一般用于对静态数据的初

始化。静态构造函数不能有参数,不能有修饰符而且不能被调用,当类被加载时,类的

静态构造函数自动被调用。
    声明了一个有静态构造函数的类Employee。注意静态构造函数只能对静态数据成员

进行初始化,而不能对非静态数据成员进行初始化。但是,非静态构造函数既可以对静

态数据成员赋值,也可以对非静态数据成员进行初始化。

------------------------
★析构函数

是实现销毁一个类的实例的方法成员。析构函数只能有一个,不能有参数,不带任何修饰符(一般尽量不用

显示调用析构函数)。由于析构函数的目的与构造函数的相反,就加前缀‘~’以示区别。

----

C#(更确切的说是CLR)提供了一种新的内存管理机制---自动内存管理机制(Automatic memory manag

ement),资源的释放是可以通过“垃圾回收器” 自动完成的,一般不需要用户干预,但在有些特殊情况下还

是需要用到析构函数的,如在C#中非托管资源的释放。
  资源的释放一般是通过"垃圾回收器"自动完成的,但具体来说,仍有些需要注意的地方:
  1、值类型和引用类型的引用其实是不需要什么"垃圾回收器"来释放内存的,因为当它们出了作用域后会自

动释放所占内存,因为它们都保存在栈(Stack)中;
  2、只有引用类型的引用所指向的对象实例才保存在堆(Heap)中,而堆因为是一个自由存储空间,所以它并

没有像"栈"那样有生存期("栈"的元素弹出后就代表生存期结束,也就代表释放了内存),并且要注意的是,"垃圾回

收器"只对这块区域起作用。

------------------------
★构造/析构函数调用顺序
   在类的层次结构中(即继承结构中)基类和派生类的构造函数的使用方式。派生类对

象的初始化由基类和派生类共同完成:****基类的成员由基类的构造函数初始化,派生

类的成员由派生类的构造函数初始化。   当创建派生类的对象时,系统将会调用基类的

构造函数和派生类的构造函数,****构造函数的执行次序是:先执行基类的构造函数,

再执行派生类的构造函数。****如果派生类又有对象成员,则,先执行基类的构造函数

,再执行成员对象类的构造函数,最后执行派生类的构造函数。析构则反之
  ****至于执行基类的什么构造函数,缺省情况下是执行基类的无参构造函数,如果

要执行基类的有参构造函数,则必须在派生类构造函数的成员初始化表中指出。
附-例:
class A { private int x; public A( ) { x = 0; } public A( int i ) { x = i; } }; class B : A { private int y; public B( ) { y = 0; } public B(int i ) { y = i; } public B(int i,int j):A(i){y = j;}★//:A(i)指出执行基类的有参构造函数 }; B b1 = new B(); //执行基类A的构造函数A(),再执行派生类的构造函数B() B b2 = new B(1); //执行基类A的构造函数A(),再执行派生类的构造函数B(int) B b3 = new B(0,1); //执行执行基类A的构造函数A(int)再执行派生类的B(int,int)

------------------------
★重载与重写
   重载只发生在同一个名字空间中(一个类也是一个名字空间)。
   overload(静态bind) :是函数名相同,参数列表不同  
   override(动态bind):函数特征相同。但是具体实现不同,主要是在继承关系中出现

的(既override是用来实现多态的) 
—————————————
//virtual类型的特殊情况---构造/析构函数
TOOP1:有一些方法应该不是一般的继承,比如 构造、析构、拷贝构造... (就是那些在

用户未定义时,由系统自动生成默认方法的那些成员方法)这些方法应该是逐级调用的关

系,而不是“继承” 关系。

构造/析构函数是不可以继承的,但是可以重载构造函数,而析构函数是既不能重载

(每个类析构函数有且只一个)。
    各人认为:为什么说子类不能继承父类的构造或析构函数,析构/构造函数系统都会

分配一个默认的处理方法,如果没有定义系统会自动分配默认的,而不是调用父类的(就

像TOOP1处 所说只是在创建对象或销毁对象的时候逐级调用自己的方法)。
------------------------

------------------------

------------------------

------------------------

------------------------

------------------------

面向对象 --OOP相关推荐

  1. 【转载】PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持. 如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们 ...

  2. PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...

  3. PHP面向对象(OOP)----分页类

    PHP面向对象(OOP)----分页类 同验证码类,分页也是在个人博客,论坛等网站中不可缺少的方式,通过分页可以在一个界面展示固定条数的数据,而不至于将所有数据全部罗列到一起,实现分页的原理其实就是对 ...

  4. 面向对象(OOP)基本概念

    面向对象(OOP)基本概念 {#toc_0} 面向对象编程 ------ Object Oriented Programming 简写 OOP 目标 {#toc_1} 了解 面向对象 基本概念 面向对 ...

  5. 面向对象(OOP)基本概念及基本语法

    面向对象(OOP)基本概念 面向对象编程 -- Object Oriented Programming 简写 OOP 目标 了解 面向对象 基本概念 面向对象基本概念 我们之前学习的编程方式就是 面向 ...

  6. Python使用---面向对象OOP(类和对象)--完善中

    来源于此 目录 1.面向对象(OOP)基本概念 1.1 过程和函数(科普) 1.2 面相过程 和 面相对象 基本概念 2 类和对象 2.1 类 2.2 对象 2.3 类和对象的关系 3 类的设计 4 ...

  7. java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象

    上一期是变量,在java中变量总是无处不在,而变量其意就是可以改变的数,在一般情况下我们可以以变量类型,变量名,变量值来描述它 这一期是给面向对象(OOP)开了一个头,对他的概念,三大特征有了一个基础 ...

  8. java基础(三):java面向对象OOP

    java面向对象OOP 基本概念 面向过程与面向对象 面向过程:关注代码实现的细节.复用性 面向对象:先把每个过程的代码实现细节整合到对象中,只要找到对象就能拥有对象身上所有的功能. 面向对象基于面向 ...

  9. 第一阶段:Java基础总复习一一一和一一一面向对象OOP总复习

    一.Java基础 0.Maven的介绍: 官网:https://maven.apache.org/download.cgi (1)Maven是什么? Maven 是 Apache 开源组织奉献的一个开 ...

  10. java面向对象oop阶段总结

    名词解释 笔记0927 *对象数组起始位置可以初始化几个元素 // 1.功能五 判断队名是否重复2.给队起名:3.队伍建队用flag循环判断是否队伍已满: 2.功能六 遍历二维数组子元素的方法 *3. ...

最新文章

  1. 复旦陈静静 | 把握当下,坚持热爱,与食物图像识别结缘的科研之路
  2. 编译安装php之安装libiconv-1.14.tar.gz出错解决方法
  3. Android textview字体颜色显示和图片显示
  4. perform build_lc_system_stat
  5. [MOSS开发]:如何使用用户控件
  6. 怎么判断噎到没噎到_嚼半天吐出来,稍硬的食物都不吃,1岁的孩子咀嚼能力差怎么办?...
  7. 左神算法进阶班5_3求公司的最大活跃度
  8. 一个unity2d横版小游戏
  9. Android学习系列(一)初识安卓
  10. narwal无法连接机器人_知了连接型智能营销机器人——重新定义AI客服
  11. BZOJ3813 奇数国
  12. 服务器网页不显示动画,网页flash动画不显示的解决方法
  13. 【STM32Cube笔记】16-STM32Cube个性化定制
  14. java怎么加锁_JAVA多线程(3)——如何加锁
  15. 多分辨率风场数据可视化
  16. php 汉字拼音字典排序,按拼音排序的小技巧
  17. 服务器ssd硬盘格式化,格式化没你想象的简单 格式选错了对SSD有损
  18. unreal4 分辨率设置
  19. Multisim设置图纸大小的详细步骤
  20. 怎么设置织梦栏目html结尾,dedecms网站栏目地址url优化成.html结尾的而不是文件夹形式结尾的。请大家来帮忙。...

热门文章

  1. WHQL认证(徽标认证)步骤介绍
  2. php错误报告和调试
  3. android 推送图标大小,Android状态栏图标大小 – 使用Cordova / Phonegap推送插件
  4. 佛寺风飘飘,塔上幡摇摇
  5. 【保存】新装Win10后Edge、OneDrive无法登录微软账号解决办法
  6. aliexpress商品详情API接口(速卖通商品详情页面数据接口)
  7. preg_replace_callback函数的使用
  8. WORDPRESS 网站打不开 error establishing a database connection 、is marked as crashed and should be repa
  9. pccs色卡_PCCS色卡RGBCMYK對照表.PDF
  10. Excel导入,一般会遇到的一些问题