面向对象软件系统 OOPS的四大主要特征:
封装 Encapsulation
继承 Inheritance
多态 Polymorphism
抽象 Abstraction
封装 Encapulation
多态 Polymorphism
多态指的是使用相同的接口来应对不同的底层形式的能力。
其实就是多个类继承或者实现了同一个类或者接口,每个子类中都有实现某一个方法,
Shape shape = new Squre();//其中Shap被Rectangle、Circle等类继承
shape.area();//那么shape.area()就可以实现获得多个形状的面积
面向对象的编程语言在运行时所实现的多态过程叫做动态绑定。
注:多态是指根据调用函数的对象来选择更具针对性的方法的特性。当没有抽象类的时候就可以使用多态。
方法重载和多态没有关系。
静态多态不是实际意义上的多态。
注意区别方法重载(Overload)和方法覆盖(Override)。
基于泛型的参数多态性
覆盖不能用于静态方法,因为覆盖依赖于具体的类实例。静态方法不依赖于具体的实例,所以覆盖不适用于静态方法。
继承Inheritance
实现了软件复用性。
抽象 Abstraction
只需要开发接口和功能,不需要实现具体的实施细节。
抽象类中可以既包括抽象方法和具体方法,如果一个方法是抽象方法,其所在的类必须被声明成抽象类。反之不然,如果一个类是抽象类,其中不一定包括抽象方法。
抽象方法不能被实例化,其他类只能扩展它。
接口 Interface
一类可以实现多个接口,类不能继承多个类
接口和抽象类的区别:
- 接口中的都是方法的声明,而且都是抽象方法,抽象类中可以有方法具体的实现(也就是可以不用是抽象的);
- 抽象类中可以有静态方法,接口中不可以(java8 实现了接口中有默认方法以及静态方法)
- 抽象类中有构造函数,接口中没有;
- 抽象类中的变量可以自定义其可见性(public private protected),但是接口中的方法一定都要是public的;
- 接口中的变量都是final型的,抽象类中的变量可以是其他类型;
- 类是不能实现多重继承的,抽象类也不例外;接口可以。
- 继承抽象类的子类一定要将其父类的方法均实现,但是接口可以不用。
合成
在新类里简单地创建原有类的对象。我们把这种方法叫作“合成”
为进行合成,我们只需在新类里简单地置入对象句柄即可。