Java语言程序设计复习要点
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1Java语言的面向对象特性
3.2.1类
类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素。Java语言是建立在类这个逻辑结构之上,所以Java是一种完全面向对象的程序设计语言。
类是Java的核心,Java程序都由类组成,一个程序至少要包含一个类,也可以包含多个类。对象是类的实例,Java程序中可以使用标识符表示对象,并通过对象引用类中的变量和方法。
类封装了一类对象的状态和方法,是这一类对象的原形。一个类的实现包括两个部分:类声明和类体。
1.类的声明
类通过关键字class来创建,下面的声明语句格式给出了可能出现的符号和顺序:
[public] [abstract] [final]
<类体(成员变量和成员方法)>
}
其中,[]表示为可选项,<>表示为必选项。关键字含义说明如下:
①class 类名
class关键字告诉编译器这是一个类,类名是可以自由选取但必须是合法的标识符。
在声明类的语句中,class前面的关键字称为类的修饰符。
②public(公共的)
在没有任何修饰符的缺省情况下,类只能被同一个源程序文件或同一个包中的其它类使用,如例4.3中的MyBox 只能被ClassDemo2使用。加上public修饰符后,类可以被任何包中的类使用,称为公共类。有关包的概念请参考后面章节的内容(目前可把包当作一个源程序文件)。
③abstract(抽象的)
有时,定义的类代表了一个抽象的概念,就不能用它来实例化一个对象。
同样在OOP中,可能建立了一个不需要产生对象的类。例如,ng包中的Number类代表了数这个抽象概念,可以用它在程序中产生一个数的子类,如Interger或Float,但从Number中直接生成对象是没有意义的。
abstract说明的类称为抽象类,不能用它实例化一个对象,它只能被继承。
④final(最终的)
final说明的类称为最终类。一个最终类不可能有子类,也就是说它不能被继承。
在设计类时,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展,那么就设计为final类。
final类不能被继承,因此,final类的成员方法没有机会被覆盖,默认都是final的。
final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
为什么要把一个类说明为最终类呢?有两点理由:为了提高系统的安全性和出于对一个完美类的偏爱。
黑客常用的一个攻击技术是设计一个子类,然后用它替换原来的父类。子类和父类很相象,但做的事情却大不一样。为防止这样的事情发生,你可以把你的类声明为最终类,不让黑客有机可乘。
⑤extends(继承)父类名
extends告诉编译器创建的类是从父类继承下来的子类,父类必须是Java系统类或已经定义的类。
从父类继承,可以提高代码的重用性,不必从头开始设计程序。大部分情况下应该利用继承的手段编程,只在
没有合适的类可以继承时才自己设计类。
⑥implements(实现)接口名
implements告诉编译器类实现的接口,接口必须有定义,一般为系统类。
接口是消息传递的通道,通过接口,消息才能传递到处理方法中进行处理。implements说明你的类可以实现的一个或多个接口,如果有多个接口,要用逗号分隔。关于接口的设计和使用请参考第6章的内容。
说明:
Java程序在定义类时,除了使用class关键字标识之外,还可以在class之前增加若干修饰符来修饰限定所定义的类的特性。
类的修饰符分为访问控制符和非访问控制符两大类。修饰符之间的先后排列次序对类的性质没有任何影响。
下表展示了非访问控制符对类、变量和方法的修饰作用。
Java中非访问控制修饰符
修饰符类变量方法
abstract 抽象类抽象方法
final 最终类最终变量最终方法
static 静态变量静态方法
volatile 易失变量
native 本地方法
synchronized 同步方法访问控制符是组限定类、域或方法是否可以被程序里的其他部分访问和调用的修饰符。类的访问控制符只有一个public,变量和方法的访问控制符有3个,分别是public、private和protected。另外还有一种没有定义专门的访问控制符的默认情况。
Java中的访问控制修饰符
修饰符类变量方法
public √√√
protected √√
默认无修饰符√√√
private √√
Java中的访问控制符的控制范围
控制范围public protected默认无修饰符private
同一类中可见√√√√同一包中对子类可见√√
同一包中对非子类可见√√√
不同包中对子类可见√√
不同包中对非子类可见√
2.类体
类体主要用来描述类所具有的状态和具备的行为(功能)。其中,成员变量(有时也称为属性、数据、域)描述了类和对象的状态,成员方法则描述了类所具备的功能。对成员变量的操作实际上就是改变类和对象的状态,使之能满足程序的需要。对象的行为由类的方法实现,其它对象可以调用一个对象的方法,通过消息的传递实现对该对象行为的控制。
与类相似,成员变量/成员方法也有很多修饰符,用来控制对成员变量的访问,实现对类和对象的封装。