OO/A/D/P

对象和类 三大特征

对象:

对象是面向对象语言的一个极为重要的特点,所有的面向对象语言都有对象的共性。

1. 职责(单一)

2. 属性(数据、可改变的)

3. 函数(行为、方法、业务算法)

总结:一个完整的对象是具有属性和行为以及它自身的职责。

一个完整的对象是具有属性和行为以及它自身的职责。

类:

任何对象都需要经过一个设计的阶段,通过设计,就可以很好的描述一个对象的内容,那么,设计的工作就是由类来完成。

因此,类专门设计和描述了同一类对象共有的特征

总结:通过类设计出来的对象就可以在计算机中的JVM执行。

对象之间的通信:

有时候,一个大的任务是需要很多个不同的对象协力来完成,这时某个对象会需要另外一个对象的职责功能来协助。

创建对象--->调用对象的方法-->返回结果。这个过程就是一次通信

封装:

隐藏内部的实现细节。

1.包具有封装的特性,控制类的访问。

2.类也具有封装的特性,控制成员(属性、行为)的访问。

3.行为本身也具有封装的特性,隐藏了功能的实现细节。

主要都是通过访问修饰符进行控制。

继承:

继承的前提条件是要有父类,才有继承。

继承的特点是提取子类的共性,避免重复。

重载和重写的特点:

1.重写

只能发生在父类和子类之间,方法名、返回值类型、参数个数和类型都必须相同,访问修饰符要大于或等于父类的级别。

当父类继承的方法不能满足当前的业务场景时,子类可以重写该方法。

2.重载

可以发生在父类和子类之间,也可以发生在本类当中。要求方法名相同,方法的参数个数和类型必须不同,对返回值和访问修饰符没有要求

多态:

多态同样是发生在父类和子类之间或者是接口与实现类之间。

“父类类型,子类对象。编译时看父类,运行时看子类”

不同的子类,在不同的业务场景中可以充当其父类的角色在运行,

看到的还是其父类的类型。

重写:属于运行时多态。(在运行时决定。如果子类发生了重写,那么将执行重写后的方法)

重载:属于编译时多态。(在编译时决定。在编译阶段就明确制定调用的是

OO.A.D.P的更多相关文章

  1. GLUT的简洁OO封装

    毕业设计用到了OpenGL,由于不会用MFC和Win32API做窗口程序:自然选用了GLUT.GLUT很好用,就是每次写一堆Init,注册callback,觉得有点恶心,于是对他做了简单的OO封装.记 ...

  2. Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结

    Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结 1. Sql语言应该得到更大的范围的应用,1 1.1. 在小型系统项目中,很适合存储过程写业务逻辑2 1.2. 大型 ...

  3. OO中,先有对象还是先有类?

    就是问,在面向对象思想里,先有对象还是先有类,乍一看和先有鸡蛋还是先有鸡是一类问题,其实不然!这个问题,在lz考研复试的时候被面试官问过,一模一样,如今又在一个笔试题里看到了类似的题目,眨一下,有人会 ...

  4. OO方式下,ALV TREE和ALV GRID的不同之处

    作为大部分报表程序的基础,ALV GRID差不多是每个ABAP开发者必须了解和掌握的内容,因此网上也不乏相关资料,而ALV TREE的应用相对较少,中文资料也就比较少见了.实际上,ALV TREE和A ...

  5. 从人类社会的角度看OO(独家视角)

    引言 在OO的工作中,我们一定会涉及到类,抽象类和接口.那么类和抽象类以及接口到底扮演的什么角色? 本文主要是从人类社会的角度阐述类与抽象类以及接口的"社会"关系,从而让我们抛弃书 ...

  6. HDU5288 OO’s Sequence

    Problem Description OO has got a array A of size n ,defined a function f(l,r) represent the number o ...

  7. lua下的简单OO实现

    笔者学习了当前(文末各文献)lua下的各种OO实现方法.略作笔记. 也提出了一些自己的想法.主要还是记录供将来着之参考.   1.概述   首先[2]PIL第二版中给出了OO的基于table的实现方式 ...

  8. OO的五大原则是指SRP、OCP、LSP、DIP、ISP。

    OO的高层原则,面向对象设计的基本原则 设计模式之六大原则--开闭原则(OCP) 设计模式之六大原则--迪米特法则(LoD,LKP) 设计模式之六大原则--接口隔离原则(ISP) 设计模式之六大原则- ...

  9. Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js

    Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一  三个基本的特性:封装.继承与多态1 1.2. 魔 ...

随机推荐

  1. Linux常见命令

    du -sh 查看当前文件夹大小 tail -f /var/log/nginx/access.log 查看日志 vsFTPd Linux上面的ftp df -lh 查看磁盘 df -i 查看inode ...

  2. Python基础(二)之集合

    集合以{}形式表现,一个集合中的元素各不相同,即集合体现为去重的特性.主要用于关系测试,常见的集合操作:交集.并集.插件.子集.父集.对称差集等. 设置集合: list_1 = [1,3,4,5,7, ...

  3. 同时闪烁多个要素代码(ArcEngine)

    /// <summary> /// 根据查询条件构造/// </summary> /// <param name="where">查询条件< ...

  4. poj 1806 Manhattan 2025

    点击打开链接 题目大意就是给定一个最大歩数,让你输出你在三维的空间中可以到达的位置的切片,注意当歩数大于9的时候就不需要输出了! #include<stdio.h> #include< ...

  5. .net MVC3 页面和 action 传值问题

    一.ViewData ViewData ViewBag 的特点和使用场景比较 1.  TempData:类型是字典的键值对结构 特点:值只能取一次.保存在Session中,Controller每次执行 ...

  6. pip install tushare

    1.sudo apt-get install libxml2-dev libxslt1-dev python-dev apt-get install libevent-dev pip install ...

  7. Android RelativeLayout用到的一些重要的属性

    转载自 http://mobile.51cto.com/android-265842.htm 第一类:属性值为true或false android:layout_centerHrizontal  水平 ...

  8. 删除sqlserver代理任务脚本

    无法删除SQLSERVER代理任务时可用如下语句试验下 use [msdb] ) set @job_name = N'jobname' --注:job_name为维护计划对应的job name --删 ...

  9. js拖动层原形版

    脚本文件: function JzDrag(moveDivId, moveDivHandle) { // var me = this; this.M = false; //是否在移动对象 this.D ...

  10. iterm2配色

    #enables colorin the terminal bash shell export export CLICOLOR= #sets up thecolor scheme for list e ...