面向对象的特征即Java的基本特性,有以下四点:
a) 封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。(就像我们使用JDBC去访问数据库一样,各种数据库被封装成一个对象,JDBC API就是访问被封装对象的接口)。
b) 继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。(比如有个原始类是“笔类”,笔类里面包含了各种笔,钢笔、毛笔、圆珠笔……,他们都有“可以写字”这个共同的特性,但根据字体的需要,要针对性选出一种笔来,就把这些笔再分为“钢笔类”、“毛笔类”、“圆珠笔类”……这些类就是“笔类”的子类,他们还是有个共同的特性“可以写字”,但是每类笔有每类笔的书法,所以他们又有各自不同的特性“字形不同”)
c) 多态性:
多态性是指允许不同类的对象对同一消息作出响应。
多态性:顾名思义就是拥有“多种形态”的含义,是指属性或方法在子类中表现为多种形态。它包括两种类型:
1、静态多态性(参数化多态性):包括变量的隐藏、方法的重载(指同一个类中,方法名相同[方便记忆],但是方法的参数类型、个数、次序不同,本质上是多个不同的方法)。
2、动态多态性(包含多态性):是指子类在继承父类(或实现接口)时重写了父类(或接口)的方法,程序中用父类(或接口)引用去指向子类的具体实例,从代码形式上看是父类(或接口)引用去调用父类(接口)的方法,但是在实际运行时,JVM能够根据父类(或接口)引用所指的具体子类,去调用对应子类的方法。
从而表现为不同子类对象有多种不同的形态。不过,程序代码在编译时还不能确定调用的哪一个类的方法,只有在运行时才能确定,故又称为运行时的多态性。
多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
d) 抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面,是一种不具体的。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。(抽象类定义了方法而不实现,正因为这样,其子类可以有更多的展现空间和实现能力;就好比定义方法名称和返回值,至于如何实现完全交给子类处理。)