转载请注明出处:jiq•钦's technical Blog

面向对象三大特征:

(1)封装(Encapsulation)

所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。

(2)继承(Inheritance)

继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

(3)多态(Polymorphism)

所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

最常见的多态就是将子类传入父类参数中,运行时调用父类方法时通过传入的子类决定具体的内部结构或行为。

面向对象五大原则:

(1)单一职责原则(Single-Resposibility Principle

•一个类应该仅有一个引起它变化的原因

职员类例子: 比如在职员类里,将工程师、销售人员、销售经理这些情况都放在职员类里考虑,其结果将会非常混乱,在这个假设下,职员类里的每个方法都要ifelse判断是哪种情况,从类结构上来说将会十分臃肿,并且上述三种的职员类型,不论哪一种发生需求变化,都会改变职员类!这个是大家所不愿意看到的!

(2)开放封闭原则(Open-Closed principle

•对扩展是开放的,对更改是封闭的!

变化来临时,如果不必改动软件实体裁的源代码,就能扩充它的行为,那么这个软件实体设计就是满足开放封闭原则的。如果说我们预测到某种变化,或者某种变化发生了,我们应当创建抽象类来隔离以后发生的同类变化。

(3)里氏替换原则(Liskov-Substituion Principle

•子类可以替换父类并且出现在父类能够出现的任何地方,贯彻GOF倡导的面向接口编程

在这个原则中父类应尽可能使用接口或者抽象类来实现!

子类通过实现了父类接口,能够替父类的使用地方!

通过这个原则,我们客户端在使用父类接口的时候,通过子类实现!

意思就是说我们依赖父类接口,在客户端声明一个父类接口,通过其子类来实现

这个时候就要求子类必须能够替换父类所出现的任何地方,这样做的好处就是,在根据新要求扩展父类接口的新子类的时候而不影响当前客户端的使用!

(4)依赖倒置原则(Dependecy-Inversion Principle

•传统的结构化编程中,最上层的模块通常都要依赖下面的子模块来实现,也称为高层依赖低层!

所以DIP原则就是要逆转这种依赖关系,让高层模块不要依赖低层模块,所以称之为依赖倒置原则!

(5)ISP 接口隔离原则(Interface-Segregation Principle)

•使用多个专门的接口比使用单个接口要好的多!

这个我有体会,在我实际编程中,为了减少接口的定义,将许多类似的方法都放在一个接口中,最后发现,维护和实现接口的时候花了太多精力,而接口所定义的操作相当于对客户端的一种承诺,这种承诺当然是越少越好,越精练越好,过多的承诺带来的就是你的大量精力和时间去维护!

Java基础:面向对象三大特征、五大原则相关推荐

  1. Java基础(面向对象三大特征)

    面向对象三大特征 封装 继承 多态 1.封装 封装,顾名思义就是将一个东西通过层层包装裹起来,例如c语言中的结构体,将属性和方法封装在一起.更加具体的,发达国家对发展中国家进行技术垄断就是通过将高科技 ...

  2. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  3. Java面试面向对象三大特征,Java面试经典基础问答三

    1. 写clone()方法时,通常都有一行代码,是什么? 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对 ...

  4. Java中面向对象三大特征总结

    JAVA中面向对象的三大特征: 面向对象具有继承性(Inheritance) 面向对象具有多态性(Polymorphism) 面向对象具有封装性(Encapsulation) 一.继承 多个类具有共同 ...

  5. 面向对象三大特性五大原则 + 低耦合高内聚

    面向对象的三大特性是"封装."多态"."继承",五大原则是"单一职责原则"."开放封闭原则"."里氏 ...

  6. java基础--面向对象三大特性(二)

    5. 继承 优点:在一定程度上提高代码的复用性(将一些重复的内容不再多次编写) 关键字:extends 子承父业将多个类中的共性再一次抽取,作为一个父类.父类的作用就是用来讲一些重复的内容不再多次编写 ...

  7. Java 基础 - 面向对象(不错N多教程集合)

    著作权归https://pdai.tech所有. 链接:Java 基础 - 面向对象 | Java 全栈知识体系 本文主要介绍Java OOP 面向对象基础和相关类图.@pdai Java 基础 - ...

  8. Java面向对象三大特征---继承

    系列文章目录 Java面向对象三大特征-多态 Java面向对象三大特征-封装 文章目录 系列文章目录 前言 一.概念 二.举例说明 三.语句格式 三.为何要使用继承 四.super与this关键字 五 ...

  9. Java面向对象三大特征的理解

    面向对象三大特征的理解 初始理解 封装 继承 多态 初始理解 其实这些知识很早就有接触,而且一些概念也牢记于心了.自己叙述面向对象的特征会是这样的: 面向对象的三大特征是封装.继承和多态.封装是对代码 ...

最新文章

  1. cad关闭图层的快捷命令是什么_CAD快捷命令汇总
  2. java mvc httpget怎么使用_springMVC正确使用GET POST PUT和DELETE方法,如何传递参数
  3. [POJ 3164]Command Network(最小树形图,朱刘算法)
  4. 【二分】雪(luogu 7405)
  5. php开启openssl的方法
  6. C语言判断两字符串同构,c语言实现判断两颗树是否同构
  7. android Mediaplayer各种属性和方法简单介绍
  8. linux下vivado编译卡死,vivado+zedboard之Linux编译
  9. Android 神兵利器之通过解析网页获取到的API数据合集,可拿来就用
  10. matlab gui设置参数,基于Matlab/GUI界面设计的参数在线整定与优化(三)
  11. 什么是serialVersionUID?serialVersionUID详解
  12. xp计算机不记得开机密码,xp系统电脑开机密码忘记了的办法介绍
  13. 非聚集索引中的临界点(Tipping Point)
  14. 2019/04/05 腾讯笔试 后台及综合卷(java)
  15. 如何修改psd文件?psd样式怎么修改文字?
  16. 网页版微信和微信公共号扫码登陆原理分析
  17. 在条形码上如何添加日期
  18. mac book 华为C8815不能debug
  19. 让 Winform 窗口悬浮的简单方式,不可思议的 TopMost 属性
  20. lqc_软件仓库部署及应用

热门文章

  1. 三·八节,菊厂程序员用“运动轨迹绘制”向女神表白
  2. 电子工程师EMC设计时一开始就是错的,难怪总有问题,看这8条对策
  3. Linux中断申请之request_threaded_irq
  4. 开环快速峰值检波器电路
  5. 传智黑马java基础学习——day07(基本语法的练习)
  6. 如何批量删除Excel空行
  7. 计算机图形学 变换矩阵
  8. Kong的插件: session
  9. “网淘”新主张 跳蚤市场成风尚
  10. matlab 向量取倒数,Matlab 求倒数命令及控制方法