1. 封装:封装是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象。在java中能使用private、protected、public三种修饰符或不用(即默认defalut)对外部对象访问该对象的属性和行为进行限制。
2. 继承:在java语言中,被继承的类叫做父类或者基类,继承基类或者父类的类叫做派生类或者子类。继承是通过extends关键字来实现的,使用格式为:class 子类 extends 父类。通过继承,子类可以使用父类中的一些成员变量与方法。继承主要有一下几个特性:
1) java不支持多重继承,也就是说,子类至多只能有一个父类,但是可以通过实现多个接口来达到多重继承的目的。
2) 子类只能继承父类的非私有(public和protected)成员变量与方法。
3) 当子类中定义的成员变量和父类中定义的成员变量同名时,子类中的成员变量会覆盖父类的成员变量,而不会继承。
4) 当子类中的方法与父类中的方法有相同的函数名,相同的参数个数与类型时,子类会覆盖父类中的方法,而不会继承。
3. 多态:多态是面向对象程序设计中代码重用的一个重要机制,他表示当同一个操作作用在不同对象时,会有不同的语义,从而会产生不同的结果。例如,同样是执行“+”操作,“3+4”用来实现整数相加,而“3”+“4”却实现了字符串的连接。在java语言中,多态主要有一下两种表现方式:
1) 方法的重载(Overload)。重载是指在同一个类中有多个同名的方法,但这些方法的参数个数或参数类型或参数顺序不同。与访问修饰符和返回值变量无关。因此在编译时就可以确定到底调用哪个方法,他是一种编译时多态。重载可以看做是一个类中的方法多态性。
2) 方法的覆盖(Override)。子类可以覆盖父类的方法,因此同样的方法会在父类与子类中有着不同的表现形式。在java语言中,父类的引用变量不仅可以指向父类的实例对象,也可以指向其子类的实例对象。同样,接口的引用变量也可以指向其实现类的实例对象。而程序调用的方法在运行期间才动态绑定(绑定指的是将一个方法调用和一个方法主体连接到一起),就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。通过这种动态绑定的方法实现了多态。由于只有在运行时才能确定调用哪个方法,因此通过方法覆盖实现的多态也称为运行时多态。