chapter9类修饰字.ppt

chapter9类修饰字

高级类特性 访问控制 static变量、方法 final类、方法和变量 abstract类和abstract方法 访问控制 在Java中,可以在类、类的属性以及类的方法前面加上一个修饰符(modifier),来对类进行一些访问上的控制。 访问控制 访问控制的限制程度从高到低如下图所示。注意,Default不是一个修饰符,它只是用来表示一种不加任何修饰符时的状态。 static关键字 static关键字用来修饰变量、方法和内部类,称这些变量、方法和内部类为静态变量、静态方法和静态内部类 static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法” 如果访问控制权限允许,可不必创建该类对象而直接使用类名加“.”调用 static 不可用于修饰构造器 static自由块 除了用于修饰变量和方法外,还可以用于修饰类中的自由块 所谓类的“自由块”,就是在类中用“{}”包含起来的不属于任何方法或构造器的代码段 使用static来修饰的自由块只在类加载的时候执行一次,通常用于初始化静态变量 public class Count { private int serialNumber; public static int counter; static { counter = 1; } public static int getTotalCount() { return counter; } public Count() { counter++; serialNumber = counter; } } 单子(Singleton)设计模式 有时候,我们需要实现这样的功能:那就是在整个应用中,只有一个实例存在。比如,在PowerPoint中,只能出现一个帮助窗口。如果将这个帮助窗口当作一个类,这就意味着它只能有一个实例。 利用单子(Singleton)设计模式,可以实现这种需求。 final关键字 final---用于类、方法、变量前 final类---不可被继承,如java.lang.Math就是一个 final类,不可被继承 final变量---在初始化后不可改变变量值,用于常量定义。如果final变量是引用变量,则不可以改变它的引用对象,但可以改变对象的数据(属性) final方法---不可被覆盖 abstract 可以使用abstract来修饰一个类或者方法。 用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。 抽象类不能被实例化 抽象方法是只有方法声明,而没有方法的实现的方法。 抽象类(abstract class) 抽象类里面并非一定需要抽象方法,但是没有抽象方法,抽象类就没有存在的必要 在以下任一条件成立时,类必须定义成抽象类: 类中有至少一个抽象方法 类继承了父类中的抽象方法,但是至少有一个抽象方法没有实现 类实现了某个接口,但没有全部实现接口中的方法 public abstract class Shapes { /** *得出周长 */ public abstract double perimeter(); /** *得到形状 */ public abstract String getType(); } public class ShapeTriangle extends Shapes { protected double a,b,c; … … /** *实现父类中的抽象方法 */ public double perimeter() { return a+b+c; } public String getType() { return 三角形; } } 接口 接口的定义,接口的定义是由接口头定义和接口体定义两个部分组成,在接口头定义中,用关键字interface来声明接口 [public]interface interfaceName [extends superinterface1,……,superinterfacen] {//接口体 //域定义 [public][static][final]typeconstName=const Value; //方法定义 [public][abstract]returntype functionName(parilist)[throws exceptionList]; } 接口的实现 Public class ImplementsC implements InterfaceC{} 包 包是一组相关类和接口的集合。不同于继承、包含关系,包

文档评论(0)

1亿VIP精品文档

相关文档