OOP思想(Object Oriented Programming)

类和对象

在面向对象中,类和对象是最基本、最重要的组成单元

类:类可以说是一个模板,它描述了一类对象的行为和状态

对象:对象是类的一个实例,有对应的状态和行为

类是做什么用的呢:模拟现实,封装数据和代码

假如说生活中常见的动物狗,它也可以说是一个类,那么具体的对象例如:中华田园犬、哈士奇、哈巴狗等,每一个只狗都可以说是一个对象,都有它相应的特征(属性)和行为(方法),特征比如狗的颜色、名字等,行为比如会叫、游泳、吃饭等

总的概括来说:类是描述了一类具有相同特征(属性)和行为(方法)的一组对象的集合

对象的特征在类中表示为类的属性,比如狗的颜色、名字、种类等,哈士奇和哈巴狗都是狗,但是可能他们的名字或者颜色不同

对象的行为在类中是类的方法,比如狗都有的行为会叫,那么“会叫”就是类的方法

下面列举一些现实中的示例,方便理解类和对象

对象
正在考试的韩梅梅、上课的学生小明、打王者的张三
动物 一只正在打架的狗、一只睡觉的猫、一条水里的鱼

接口

什么是接口?

java与模式这本书中举得例子很形象:家里面常用的插座,我们可以把电风扇的插头拔下来,把自己电脑的充电插头插上去,这就是说,这些电器都是可插入构建,它们之所以是可插入的,是因为它们都具有和插座相匹配的插头。

那么所谓的接口,实际上就相当于插座,可插入构建就是我们用的这些电器,接口是实现构建的可插入性的关键

接口是做什么用的?

1:类之间的交互规范



2:定义功能使用者和功能提供者之间的接口

为什么要用接口?

1:隔离变化

2:接口是对可插入性的保证

抽象类

抽象类是做什么用的:包容变与不变

抽象类仅提供一个类型的部分实现,可以同时有抽象方法和具体方法,抽象方法可以说是变化的部分,具体的方法是不变的一部分

OOP三大特性

封装

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问,要访问该类的代码和数据,需要通过接口控制,封装可以让代码更容易维护和理解

封装的优点:

1:封装可以减少耦合

2:封装的类内部的代码可以随意的修改

3:隐藏实现的细节,直接调用接口即可

继承

继承是java面向对象编程技术的一块基石,继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为,或者子类覆盖父类的行为,重新实现自己的行为

继承的特性:

1:子类拥有父类非 private 的属性、方法

2:子类可以拥有自己的属性和方法,即子类可以对父类进行扩展

3:子类可以用自己的方式实现父类的方法

4:Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类

5:提高了类之间的耦合性

多态

多态就是同一个行为具有不同的表现形式,同一个接口,不同的实例实现可能会出现不同的结果

多态为我们提供了什么:一种实现变化的方式

多态的优点:

1:消除类型之间的耦合关系

2:可替换

3:可扩充

4:灵活、简化

OOP复用的形式

类与类之间的关系:

1:继承



2:持有

组合,类2持有类1的实例

类2使用类1

最新文章

  1. 自己封装的操作DOM方法
  2. 连续最短路算法(Successive Shortest Path)(最小费用最大流)
  3. 深圳测试研讨会圆满结束,PPT共享
  4. Adobe Photoshop CC 14.0简体中文特别版32位和64位下载
  5. Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序
  6. React 学习资源分享 菜鸟刚学5天 博客写的不多 不懂写博客的套路
  7. 12.04 如何更专业的使用Chrome开发者工具
  8. 基于Sql Server 2008的分布式数据库的实践(三)
  9. [置顶] Java字节码文件剖析
  10. WP自定义字体
  11. Resetting Frame Animation
  12. Oracle之SQL优化专题01-查看SQL执行计划的方法
  13. BZOJ3527[Zjoi2014]力——FFT
  14. mongdb 报错“Cannot connect to the MongoDB at 192.179.1.6:27017. Error: Network is unreachable.”
  15. nullptr/NULL
  16. java三大特性--继承
  17. ASP.NET MVC:WebViewPage.cs
  18. unity5 静态和动态cubmap
  19. @Configuration和@Bean的用法和理解
  20. 如何连接oracle,mysql, SQL Server数据库(Java版)

热门文章

  1. js 一元运算符
  2. 如何使用irealtime.js实现一个基于websocket的同步画板
  3. Elasticsearch 分片集群原理、搭建、与SpringBoot整合
  4. SpringBoot以war包形式部署到外部Tomcat
  5. 由endl对printf和cout的思考
  6. 一文读懂clickhouse集群监控
  7. 该死的端口占用!教你用 Shell 脚本一键干掉它!
  8. MyBatis文档
  9. 靶场练习-Sqli-labs通关记录(盲注)
  10. java关于字符串是否存