面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术展到一定阶段后的产物。这篇博客小编将和大家分享我对面向对象中一些名词的认识,如果有不合理的请指正。

一、面向过程和面向对象:

面向过程:以过程为中心的编程思想。分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。以汽车为例,对汽车的启动,停止等方法具体实现,这就是面向过程。

面向对象:以事物为中心的编程思想。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。还以汽车为例,我们生产汽车,只需购买各种零部件,然后组装就可以,不用关心零部件是怎么造出来的,也就是我们只关心我们所抽象出来的对象的属性等,而不关心该汽车的一些事件。这就是面向对象。

二、面向对象三特征:

1.封装

封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。该逻辑单元负责将所描述的属性隐藏起来,外界对客体内部属性的所有访问只能通过提供的用户接口实现。只要用户接口不改变,任何封装体内部的改变都不会对软件系统的其他部分造成影响。良好的封装能减少耦合,不至于,车轮胎坏了,再换辆新车。

生活中的小例子比如说汽车的轮胎坏了,我再换一个,结果并没影响整辆车的行驶,这就是封装,封装了轮胎的材质和它的滚动的方法,封装好了之后,将轮胎通过一个接口将轮胎安装在汽车上,这样即使轮胎换了一个,也不会对车的行驶造成影响。这个和分层思想很接近。

2.继承

继承有点分类的感觉,比如,猫和狗都属于动物,但又不全一样。如果子类继承与父类,第一,子类拥有父类非private的属性和功能;第二,子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;第三,子类还可以以自己的方式实现父类的功能(方法重写)。

不用继承的话,如果要修改功能,就必须在所有重复的方法中修改,代码越多,出错的可能就越大,而继承的优点是,子类公共的部分放在了父类,使代码得到了共享,这就避免了重复。

3.多态

比如猫类和狗类都继承于动物类,动物类中有个跑的方法run(),但猫有猫的跑法,狗有狗的跑法,多态表示猫和狗可以执行相同的动作,但要通过他们自己的实现代码来执行。这就是多态。

三必要条件:

(1)继承

(2)重写

(3)父类引用指向子类对象

例:子弹与飞机:我们的目的是将子弹与飞机封装起来,把画面上有的飞机与子弹画出来。

方案1.拿出每个来,判断,是子弹,画子弹,是飞机画飞机

方案2.设计一个父类,其中定义一个方法draw,子弹和飞机都继承父类,直接调父类的draw方法即可

可扩展性

主建筑建好,将来加一些其他建筑,尽量不要去修改主建筑,盖厨房,直接在主建筑旁边建,我不能说把房子拆了重盖,这样谁也不会同意的。这就是可扩展性。这也体现了开闭原则,对修改关闭,对扩展开放。

三、面向对象思考过程?

1.首先确定用哪个对象;

2.类和对象应该有哪个属性,哪个方法;

3.类与类之间有什么关系

四、对象和类

对象:一切事物皆对象,就是可以看到,听到,尝到或闻到的东西。对象可看成是静态变量(成员变量)和属性(方法)的载体。

类:具有相同的属性和功能的对象的抽象的集合。所有类都有构造方法。他的使用很简单,就实例化一下就可以了。

五、为什么用对象?

1.面向对象的编程——一组对象互相配合通过沟通完成特定功能

2.对象都有对外服务的接口——通过继承可以复用

3.对象隐藏内部服务的实现——通过聚合可以复用

4.面向对象更加容易使我们达到这些年来苦苦追求的境界——维护和替换更加方便

5.组件——比对象更高的层次上的抽象

六、对象的创建和使用

1.必须使用new

2.用对象引用成员变量或来引用对象的成员变量

3.使用对象引用方法来调用对象的方法

4.同一类的每个对象有不同的成员变量存储空间

5.同一类的每个对象共享该类的方法

七、抽象类、接口类

抽象类:abstract修饰,需要注意的:

1.抽象方法一定要重写

2.抽象类不能被实例化

3.含抽象方法的类一定声明为抽象类

例子:

接口类:抽象方法和常量值的定义的集合,是特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

特性:

1.可多重实现。

2.java接口中声明的属性默认为public static final的,也只能是public static final的。

3.只能定义抽象方法,默认public ,只能是public的。

4.可继承其他接口,并添加新的属性和抽象方法。

有趣的小例子:让猫飞

猫不能飞,但是我想实现让猫飞,所以我实现了飞这个接口,这个飞类便是接口类。

有关接口类需要注意:

1.多个无关的额类可以实现同一个接口

2.一个类可以实现多个无关的接口

3.与继承关系类似,接口与实现类之间存在多态性

4.实现了接口,就必须写出接口所有的方法

八、构造方法

构造方法又叫构造函数,其实就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new的时候调用。比如:Cat cat=new Cat();new后面的Cat()其实就是构造方法。每个类都有构造方法,如果不编码则系统默认生成空的构造方法,如果编码了,默认的机会失效。

继承中的构造方法:

  1. 调子类对象必须先调父类构造方法(不会产生父类对象)
  2. 子类可在自己的构造方法中使用super(argument_list)调用基类的构造方法
  3. 系统默认调用基类无参数的构造方法
  4. 子类中无显式调用基类构造方法,基类中又没有无参的构造方法,则编译出错。

九、重载、重写、重构

重载:同名的方法可传入不同的参数,这样,系统根据传入的参数选择执行不同的构造方法;

重写:子类都继承父类的方法,猫和狗,谁有谁的叫声,所以就要重写;

重构:动物们参加叫声比赛,刚开始写好了代码,后来小牛和小羊来报名参加比赛,这时按照原来的想法,让他们都继承Animal类就可以了,可是写完发现除了叫声不同,其他代码没有区别,这时就要想想把重复的代码放到父类Animal类中了,子类单独将声音重写即可,这就叫重构。

十、内存分析贯穿始终

创建对象是使用构造函数初始化对象的成员变量,new时,调完构造方法,方法分配的局部变量内存消失(对象被垃圾回收)。这块还不是很熟悉,正在学习中。。。

总结:

以前总结的面向对象很少,这次把一些基础都总结了下,有些可能不合理,欢迎您的指正!

感谢您宝贵的时间!

J2SE视频之面向对象——踏破铁鞋无觅处相关推荐

  1. 踏破铁鞋无觅处,得来全不费工夫--删除文本多余空行ClipboardFormatter

    从网上拷一些文章,总是有很多很多很多....的空行, 如下图(CRLF就是换行符\r\n),怎么去掉它们呢? 一般方法就是贴到文本编辑器中, 然后查找替换,查找替换,查找替换.... 周而复始,不厌其 ...

  2. 面向对象方法-大话设计模式+J2SE视频

    好像从接触编程开始,面向对象这个词总会出现.与面向对象方法作对比的是面向过程. 在大话设计模式这本书里,为什么要讲面向对象呢?并且作者在序言里提到,先看附录里的面向对象.作者为读者简述面向对象的知识, ...

  3. 电脑上视频剪辑软件预览处只有画面没有声音

    在剪辑视频时发现视频预览处只有声音没有画面,换了另一个软件发现还是这种情况. 右键此电脑,点击管理,设备管理器,显示适配器,选则某一个,右键点击禁用设备,重新打开视频剪辑软件就好了.

  4. 【c#视频】——面向对象——多态

    多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的结果.也就是说,同一个类型的实例调用"相同"的方法,产生的结果是不同的,这里的"相同"打上双引号是因 ...

  5. 组合数学 北师大 张秀平 自学 视频 NOIP

    姐妹篇:图论 北师大 张秀平 自学 视频 NOIP 请看https://blog.csdn.net/mrcrack/article/details/80563165 组合数学 北师大 张秀平 自学 视 ...

  6. OC基础--OC内存管理原则和简单实例

    ARC: 由于自己的学习视频太早,Xcode是iOS6版本,新建命令行项目后,系统会默认启动ARC机制,全程Automatic Reference Counting,简单的说,就是代码中自动加入了re ...

  7. 设计模式只是一把锤子,不要拿着到处去敲!

    谈起<设计模式>,那是几乎无人不知,无人不晓,大名鼎鼎的GoF的惊世之作,真是"平生不识GoF,学尽设计也枉然"! 然而,设计模式真的是软件设计的"瑞士军刀& ...

  8. 一个人工作之余6元上线一款APP的血泪史

    码字不易,转载请注明:转自http://www.jianshu.com/p/21ae5a3037d7 很久没有写博客了,一方面是前段时间工作项目太忙,再加上想完成自己的一个目标.还有就是写博客真的有点 ...

  9. 转:通信十年:前辈对通信行业的分析与经历

    离开通信行业已经有一段日子了.换了行业之后,慢慢的淡忘了通信的各种艰辛和酸甜苦辣. 前天晚上,突然在梦中回到以前做移动通信(核心网)技术支持的日子,回到了7*12小时工作,每天提着笔记本,没有一天(包 ...

最新文章

  1. 10月21日!API 大赛决赛暨移动云开发者论坛邀您见证数字创新的力量
  2. 一文读懂深度学习:这个AI核心技术被美国掌控,很危险
  3. 编程小白的第一本python入门书-《编程小白的第一本Python入门书》读书笔记
  4. linux cut性能,Linux cut
  5. AI:IPPR的数学表示-CNN结构进化(Alex、ZF、Inception、Res、InceptionRes)
  6. Java的JAR包, EAR包 ,WAR包内部结构
  7. Android之——图片的内存优化
  8. MySQL innodb下的记录锁,间隙锁,next-key锁
  9. MySQL 8 + Navicat for MySQL安装步骤
  10. win10系统文件拖拽卡顿_win10系统下移动鼠标卡顿如何解决
  11. 电脑扬声器安装程序(UNKNOW)
  12. 程序猿头头(数组应用)
  13. Sat Sep 25 07:38:46 Local time zone must be set--see zic manual page 2021
  14. Android字体加粗,UI小姐姐说太粗了,解决办法
  15. android数据线接口定义,安卓手机数据线接口类型
  16. 中望3D 2020 图层管理器(图层的设置+移动图层+复制图层)
  17. C#调用cplex出现引发类型为“ILOG.Concert.Exception”的异常
  18. [转载]流利说Level5
  19. “假作真时真亦假”:分类器设计中几个常见的评价指标
  20. 解决管理问题的基本思维方式

热门文章

  1. Android之世面上程序锁的实现
  2. 空海法师:阿含解脱道次第 解说讲稿 第廿六章 善用七觉支
  3. 使用tushare检验沪深300收益率和中证500收益率相关性
  4. 谈一谈Android适配(从蓝湖切图模糊问题说开去)
  5. 本地电脑怎么连接mysql_本地电脑无法连接到MySQL
  6. 淘宝小部件:全新的开放卡片技术
  7. 听完计算机知识讲座后感悟,听专题讲座心得体会范文(精选10篇)
  8. 18年2月份股市大跌感想
  9. 分享一个破解百度网盘下载速度的工具
  10. item2 + oh-my-zsh