面向对象软件系统 OOPS的四大主要特征:
封装 Encapsulation
继承 Inheritance
多态 Polymorphism
抽象 Abstraction

封装 Encapulation

Java 面相function变成 java面相对象特性_Java 面相function变成

多态 Polymorphism

多态指的是使用相同的接口来应对不同的底层形式的能力。
其实就是多个类继承或者实现了同一个类或者接口,每个子类中都有实现某一个方法,
Shape shape = new Squre();//其中Shap被Rectangle、Circle等类继承
shape.area();//那么shape.area()就可以实现获得多个形状的面积

面向对象的编程语言在运行时所实现的多态过程叫做动态绑定。

注:多态是指根据调用函数的对象来选择更具针对性的方法的特性。当没有抽象类的时候就可以使用多态。

Java 面相function变成 java面相对象特性_静态方法_02

方法重载和多态没有关系。
静态多态不是实际意义上的多态。
注意区别方法重载(Overload)和方法覆盖(Override)。

基于泛型的参数多态性

覆盖不能用于静态方法,因为覆盖依赖于具体的类实例。静态方法不依赖于具体的实例,所以覆盖不适用于静态方法。

继承Inheritance

实现了软件复用性。

Java 面相function变成 java面相对象特性_抽象类_03

抽象 Abstraction

只需要开发接口和功能,不需要实现具体的实施细节。

抽象类中可以既包括抽象方法和具体方法,如果一个方法是抽象方法,其所在的类必须被声明成抽象类。反之不然,如果一个类是抽象类,其中不一定包括抽象方法。

抽象方法不能被实例化,其他类只能扩展它。

接口 Interface

一类可以实现多个接口,类不能继承多个类

Java 面相function变成 java面相对象特性_抽象类_04

接口和抽象类的区别:

  1. 接口中的都是方法的声明,而且都是抽象方法,抽象类中可以有方法具体的实现(也就是可以不用是抽象的);
  2. 抽象类中可以有静态方法,接口中不可以(java8 实现了接口中有默认方法以及静态方法)
  3. 抽象类中有构造函数,接口中没有;
  4. 抽象类中的变量可以自定义其可见性(public private protected),但是接口中的方法一定都要是public的;
  5. 接口中的变量都是final型的,抽象类中的变量可以是其他类型;
  6. 类是不能实现多重继承的,抽象类也不例外;接口可以。
  7. 继承抽象类的子类一定要将其父类的方法均实现,但是接口可以不用。
合成

在新类里简单地创建原有类的对象。我们把这种方法叫作“合成”
为进行合成,我们只需在新类里简单地置入对象句柄即可。

Java 面相function变成 java面相对象特性_抽象类_05