面向对象的特征:封装、继承、多态
封装:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。
继承:继承:继承可以使现有的代码具有可重用性和可扩展性,增加了程序的可维护性。 不支持多重继承,但可以通过实现接口来实现多重继承。
被继承的类叫基类或父类;继承类叫派生类或子类。 关键字:extends
父类的构造方法子类不可以继承,更不存在覆盖的问题。(非构造方法可以)
JAVA的数据结构为树型结构,而非网状。(JAVA通过接口和内部类实现多继承)
多态:即多重形态。分为两种:编译时多态(重载);运行时多态(重写、覆盖)
运行时多态须具备:
1. 基类 和各个子类
2. 基类 引用, 指向实例化的子类对象.
例如: A a1 = new A1();
A a2 = new A2();
A a3 = new A3();
其中 类 A1、A2、A3都是类A的派生类,类A中有方法a(),这样就可以直接调用a1.a()、a2.a()、a3.a();而不用具体实例化A1、A2、A3再调用方法。以达到通过基类的引用指向子类的实例化对象的效果。
表现形式:重载(overloading)、重写(覆盖、override)
重载:跟继承无关, 在同一个类或者子类中,方法名必须相同。参数个数或类型必须不同。返回值和方法体可能相同可能不相同。作用:功能类似,故用相同的方法名,增加程序的可读性。在程序的编译过程中根据变量类型来找相应的方法。因此也有人认为overloading是编译时的多态
重写:与继承有关。在子类中,和继承到的父类成员函数:方法名、返回值、参数相同,方法体不同。作用:继承父类,但感觉这个方法不适合,做覆盖式修改。增加程序的可扩展性。