收藏 分享(赏)

JAVA语言程序设计第五章.ppt

上传人:精品资料 文档编号:10939936 上传时间:2020-01-22 格式:PPT 页数:36 大小:179.50KB
下载 相关 举报
JAVA语言程序设计第五章.ppt_第1页
第1页 / 共36页
JAVA语言程序设计第五章.ppt_第2页
第2页 / 共36页
JAVA语言程序设计第五章.ppt_第3页
第3页 / 共36页
JAVA语言程序设计第五章.ppt_第4页
第4页 / 共36页
JAVA语言程序设计第五章.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、1,第五章 Java 高级语言特征,静态变量、方法与初始化程序块 final 关键字 抽象类 Interface package 访问控制 内部类 其它,2,类变量(static /class variable),在该类所有实例之间是共享的。在加载该类时,只分配 一次空间,并初始化。 例:class Employee static int com ; 则运行时,,3,类变量(static /class variable),类变量可用来在实例之间进行通信或跟踪该类实例的数目。,例:public class Countprivate int serialNumber ;private static

2、 int counter = 0 ;public Count( )counter+ ;serialNumber = counter ;,4,类变量可以是public 或private 对于public 类型的类变量,可以在类外直接用类名调用而不需要初始化。Public class StaticVarpublic static int number ; public class Otherclasspublic void method()int x = StaticVar.number ; ,类变量(static /class variable),5,类(class/static)方法,可以直接

3、被调用,而不需要生成任何实例public class GeneralFunctionpublic static int addUp(int x, int y)return x+y ; public calss UseGeneralpublic void method()int c = GeneralFunction.addUp(9,10); ,6,静态初始化程序,没有存在于任何方法体中的静态语句块。在加载该类时执行且只执行一次。 public Class StaticInitDemostatic int i=5;static System.out.println(“Static code: i

4、=”+ i+); public class Test public static void main(String args)System.out.println(“ Main code: i=”+StaticInitDemo.i);,Static code: i=5 Main code: i = 6,7,Final 关键字, 被定义成final的类不能有子类。 例: final class Employee class Manager extends Employee 被定义成final 的成员方法不能被重写。被定义成final的成员变量不能改变。该变量实际上 是常量,一般大写,并赋值。fi

5、nal int NUMBER = 100;,8,抽象类,一个类如果只声明方法而没有方法的实现,则称为抽象类。 必须在声明中增加 abstract 关键字,在无方法体的方法前也要加上abstract。 Public abstract class Drawingpublic abstract void drawDot( int x, int y);public void drawLine(int x1, int y1, int x2,int y2)./ 调用drawDot()方法 抽象类也可有普通的成员变量或方法。,9,抽象类,抽象类不能直接用来生成实例。一般可通过定义 子类进行实例化。 可以生成

6、抽象类的变量,该变量可以指向具体的一个 子类的实例。,Abstract class Employeeabstract void raiseSalary(int i) ; class Manager extends Employeevoid raiseSalary(int i ) .,Employee e = new Manager( ) ;,10,接口 interface, Interface 是在抽象类概念的基础上演变而来的。 一个interface所有成员方法都是抽象的,并且只能 定义 static final 成员变量。,11,Interface 的含义,interface定义了一组行为

7、的协议。两个对象之间通过这个协议进行通信。interface 不属于类层次结构。不相关的类可以实现相同的接口。,12,Interface 示例,13,用implements代替extends声明子类,该子类中必须实现接口(及其超类)中的所有方法。 例:interface SayHello void printMessage( );class SayHelloImpl implements SayHellovoid printMessage( )System.out.println(“Hello”);,实现interface,14,Interface的使用,Interface可以作为一种数据类型

8、使用。 如:,public class StockMonitor public void watchStock(StockWatcher watcher,String tickerSymbol, double delta) . ,15,Interface 中注意问题,不能向interface定义中随意增加方法。 public interface StockWatcher final String sunTicker = “SUNW“;final String oracleTicker = “ORCL“;final String ciscoTicker = “CSCO“; void valueC

9、hanged(String tickerSymbol, double newValue); void currentValue(String tickerSymbol, double newValue); ,public interface StockTracker extends StockWatcher void currentValue(String tickerSymbol, double newValue); ,16,可以通过实现接口实现多重继承:一个类可只继承 一个父类,并实现多个接口。 interface I1 ; interface I2 ; class E . ;class

10、M extends E implements I1,I2 一个interface 可作为类名使用,实现多态。,接口 interface,Interface Human class Chinese implements Human class Japanese implements Human . Human e = new Chinese( ); Human e = new Japanese( );,17,类分组 package 语句,包(package)是相关类与接口的一个集合,它提供访问控制与命名空间管理。 Java平台中的类与接口都是根据功能以包组织的。 包机制的好处: 程序员容易确定包

11、中的类是相关的,并且容易根据所需的功能找到相应的类。 每个包都创建一个新的命名空间,因此不同包中的类名不会冲突。 同一个包中的类之间有比较宽松的访问控制。,18,创建包,用package语句指定源文件中的类属于一个特定包: package 包名 包定义语句在每个源程序中只能有一条, 即一个类只能属于一个包。 包定义语句必须在程序的第一行(之前可有空格及注释)。 包名用“.” 分隔。,19,import 语句,将package 引入源程序,格式:import 包名.*;import 包名. 类名; import 语句必须在源程序之前,在package 声明之后。 package /缺省是pack

12、age . import . /缺省是import java.lang.*类声明 .,20,包名与包中类的存储位置,包分隔符相当于目录分隔符,包存储的路径由包根路径加上包名指明的路径组成。 包的根路径由CLASSPATH环境变量指出。%CLASSPATH%abc financeDept,21,源文件(.java)与类文件(.class)的管理,源文件可以按照包名指明的路径放置。如,类文件也应该放在反映包名的一系列目录下。,22,一般将源文件与类文件分别存放,可采用如下方式:,源文件(.java)与类文件(.class)的管理,示例,23,高级访问控制,成员变量和方法有4种访问级别:public

13、, protected, default(package), private ; 类有两种访问级别:public 或default。 修饰符的作用范围: Modifier Same class Same Package Subclass Universe public Yes Yes Yes Yes protected Yes Yes Yes default Yes Yes private Yes,24,class Alpha private int iamprivate; private void privateMethod() System.out.println(“privateMeth

14、od“); class Beta void accessMethod() Alpha a = new Alpha(); a.iamprivate = 10; a.privateMethod(); ,高级访问控制-private,/ illegal,/ illegal,25,class Alpha private int iamprivate; boolean isEqualTo(Alpha anotherAlpha) if (this.iamprivate = anotherAlpha.iamprivate) return true; else return false;,高级访问控制,注意:

15、访问控制应用于class或type 层次,而不是对象层次。,26,允许类本身、它的子类、以及同一个包中其余的类访问这些成员。 package Greek; public class Alpha protected int iamprotected; protected void protectedMethod() System.out.println(“protectedMethod“); package Greek; class Gamma void accessMethod() Alpha a = new Alpha(); a.iamprotected = 10; a.protectedM

16、ethod(); ,高级访问控制protected,/ legal,/ legal,27,package Latin; import Greek.*; class Delta extends Alpha void accessMethod(Alpha a, Delta d) a.iamprotected = 10; d.iamprotected = 10; a.protectedMethod(); d.protectedMethod(); ,高级访问控制protected,X,X,28,package Greek; class Alpha int iampackage; void packag

17、eMethod() System.out.println(“packageMethod“); package Greek; class Beta void accessMethod() Alpha a = new Alpha(); a.iampackage = 10; a.packageMethod(); ,高级访问控制package,29,内部类,内部类是在一个类的声明里声明的类。 Class A class B 内部类可作为类的一个成员使用。一般只在包容类中 调用。 内部类可以访问外包类的所有成员。,30,= = 运算符与equals( )方法, equals() 和 = = 比较两个引用

18、是否指向相同的对象。 equals()方法在String, Date, File, 所有Wrapper类都重写了该方法,改为比较内容。,31,Wrapper类, Wrapper将基本类型表示成类。 每个wrapper类对象都封装了基本类型的一个值。Primitive Data Type Wrapper Class boolean Boolean byte Byte char Character short Short int Integer long Long float Float double Double,32,Wrapper类,Wrapper类中包含了很多有用的方法和常量。如数字型Wr

19、apper类中的MIN_VALUE 和 MAX_VALUE 常量,定义了该类型的最大值与最小值。byteValue, shortValue方法进行数值转换,valueOf 和 toString 实现字符串与数值之间的转换。,例:Wrapper类对象的创建: Integer quantity = new Integer(123456); Double amount = new Double(345987.246);,33,Collection API - 集合类,一个集合类对象表示了一组对象,相当于一个容器。,34,Set, Set不能包含重复的元素。 两种Set实现:HashSet和TreeS

20、et Set 接口定义:public interface Set / Basic Operations int size(); boolean isEmpty(); boolean contains(Object element); boolean add(Object element); / Optional boolean remove(Object element); / Optional Iterator iterator(); ,35,List, List是有序的集合,元素可以重复。 List接口定义:public interface List extends Collection

21、/ Positional Access Object get(int index); Object set(int index, Object element); / Optional void add(int index, Object element); / Optional Object remove(int index); / Optional abstract boolean addAll(int index, Collection c); / Optional / Search int indexOf(Object o); int lastIndexOf(Object o); Li

22、st的实现: ArrayList, LinkedList,Vector,36,Map,Map把键值映射到某个值。一个键值最多只能映射一个值。 Map 接口定义:,public interface Map / Basic OperationsObject put(Object key, Object value); Object get(Object key); Object remove(Object key); boolean containsKey(Object key); boolean containsValue(Object value); int size(); boolean isEmpty(); ,Map的实现:HashMap, TreeMap, HashTable,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报