文档介绍:Java语言程序设计
资源与环境科学学院
第五章访问控制、包、接口、异常
访问控制
Java语言有很多限定符。(见书P82)
Java语言提供了4种级别的访问控制:
公有、私有、受保护和默认(不使用限定符)
(书P83)
访问控制
类本身有访问控制,即在定义类的class关键字前加上访问控制符,但类本身只有两种访问控制,即public和默认。父类不能是private 和 protected,否则子类无法继承。
public修饰的类能被所有的类访问,默认修饰(即class关键字前没有访问控制符)的类,只能被同一包中的所有类访问。
类中成员的访问控制
Final—强制禁止覆盖
在Java中声明类、属性和方法时,可使用关键字final来修饰。
final标记的类不能被继承。书P88
final标记的方法不能被子类重写。书P88
final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。书P87
用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期,将一个形参定义成final也可以,这就限定了我们在方法中修改形式参数的值。
public static final共同标记常量时,这个常量就成了全局的常量。
Abstract—强制覆盖
java中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自己的情况去实现,这样的方法就是抽象方法,包含抽象方法的类就叫抽象类。
抽象类必须用abstract关键字来修饰;抽象方法也必须用abstract来修饰。
抽象方法只需声明,而不需实现。
抽象类不能被实例化,也就是不能用new关键字去产生对象。
含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。书P88
Abstract—强制覆盖
abstract class A
{ abstract int aa(int x,int y); //抽象方法
void xx() //抽象类中可以有非抽象方法。
{ ("OK"); }
public static void main(String [] args)
{ A a = new A(); //错误,抽象类不能实例化}
}
class B extends A
{ int aa(int x,int y) //子类必须覆盖抽象方法
{ return 0; }
void bb() { }
}
包
package语句作为Java源文件的第一条语句。如果没有package语句,则为缺省无名包。包是一种组织类的方式,这些类用途相关或有继承关系。 P89
jdk中常用的包
----包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
----包含applet运行所需的一些类。
----包含执行与网络相关的操作的类。
----包含能提供多种输入/输出功能的类。
----包含一些实用工具类,如定义系统特性
接口(interface)
如果一个抽象类中的所有方法都是抽象的,可以将这个类用另一种方式定义,即接口定义。
接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。书P93
接口中的成员都是public访问类型的。接口里的变量默认是用public static final标识的。
接口(interface)
可以定义一个新的接口用extends关键字去继承一个已有的接口书P95
可以定义一个类用implements关键字去实现一个接口中的所有方法,可以定义一个抽象类用implements关键字去实现一个接口中定义的方法
一个类可以继承一个父类的同时,实现一个或多个接口,extends关键字必须位于implements关键字之前。