面向对象四大特性
概述
什么是面向对象,对比面向过程是两种不同处理问题角度,面向过程注重的是每一个步骤及顺序,面向对象注重的是哪些参与者(对象)以及各自需要做什么
例如:洗衣机洗衣服
- 面向过程:1、打开洗衣机>2、放入衣服>3、放入洗衣液>4、洗衣服>5、烘干
- 面向对象: 拆分两个对象人和洗衣机
- 人:打开洗衣机、放入衣服、放入洗衣液
- 洗衣机:洗衣服、烘干
面向过程比较直接高效,面向对象更易于复用、扩展和维护
一:抽象
抽象就是将一类实体的共同特性抽象出来,父类为子类提供一些属性和行为,子类根据业务需求实现具体的行为。 抽象类使用abstract进行修饰,子类要实现所有的父类抽象方法否则子类也是抽象类,抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
二:封装
通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。
封装的步骤:
1、修改属性的可见性来限制对属性的访问
2、为每个属性创建赋值和取值的方法,用于对这些属性的访问
3、在赋值和取值的方法中,加入对属性的存储限制
优点:
1、减少耦合: 可以独立地开发、测试、优化、使用、理解和修改
2、减轻维护的负担: 可以更容易被程序员理解,并且在调试的时候可以不影响其他模块
3、有效地调节性能: 可以通过剖析确定哪些模块影响了系统的性能
4、提高软件的可重用性
5、降低了构建大型系统的风险: 即使整个系统不可用,但是这些独立的模块却有可能是可用的
访问修饰符 public,private,protected,以及不写(默认) 时的区别
三:继承
继承是从已有类得到继承信息创建新类的过程,实现了 IS-A 关系,例如 Cat 和 Animal 就是一种 IS-A 关系,因此 Cat 可以继承自 Animal,从而获得 Animal 非 private 的属性和方法。 继承应该遵循里氏替换原则,子类对象必须能够替换掉所有父类对象。
例如:
Animal animal = new Cat();
Cat 可以当做 Animal 来使用,也就是说可以使用 Animal 引用 Cat 对象。父类引用指向子类对象称为-向上转型 。
继承的特征:
1、可传递可扩展
2、可复用
3、可维护性
四:多态
多态分为编译时多态和运行时多态:
1、编译时多态主要指方法的重载
2、运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定
运行时多态有三个条件:
1、继承
2、覆盖(重写)
4、向上转型
五:标识符的命名规则:
- 标识符的含义:
是指在程序中,我们自己定义的内容,譬如,类的名字,方法名称以及变量名称等等,都是标识符。 - 命名规则:(硬性要求)
标识符可以包含英文字母,0-9的数字,$以及_
标识符不能以数字开头
标识符不是关键字 - 命名规范:(非硬性要求)
类名规范:首字符大写,后面每个单词首字母大写(大驼峰式)。
变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。
方法名规范:同变量名。