01. 面向对象
对象: 指人们要研究的任何事物,不管是物理上具体的事物,还是抽象概念上的规则、事件。
每一个对象都具有状态和行为,状态用相关的数据表示,如一块砖,它的状态就有:颜色,长,宽,高,材料....,行为即对该对象的状态进行改变,对象实现了数据和操作的结合,使数据和操作封装在对象的统一体中。
类: 具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
在面向对象程序设计中,将一个功能的实现看成由多个对象间的联系(即方法调用)来实现的。
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了
三个特征:
- 封装:
就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。 - 继承:
继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。 - 多态:
多态,是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
五个基本原则:
- 单一职责原则SRP(Single Responsibility Principle)
是指一个类的功能要单一,不能包罗万象。便于维护,代码易读。 - 开放封闭原则OCP(Open-Close Principle)
允许扩展,拒绝修改。 - 里式替换原则LSP(the Liskov Substitution Principle LSP)
子类应当可以替换父类并出现在父类能够出现的任何地方。(子类继承了父类,应该比父类更强大) - 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
具体依赖抽象,上层依赖下层。 - 接口分离原则ISP(the Interface Segregation Principle ISP)
模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来
Java如何实现的平台无关
说的简单点就是JVM(Java虚拟机)屏蔽了不同硬件平台之间的差异,所以Java可以一次编译,随处运行。
复杂点的解释就是,JVM可以将Java编译之后的字节码转换成当前系统所在的硬件平台的机器指令进行执行。
JVM还支持哪些语言
0. Java
1. kotlin
2. Scala
3. Clojure
4. Groovy
5. Jython
6. JRuby
7. Ceylon
8. Eta
9. Haxe