JAVA语言程序设计第五章[详版课资].ppt

上传人:rrsccc 文档编号:10248442 上传时间:2021-05-02 格式:PPT 页数:36 大小:523.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页
点击查看更多>>
资源描述

《JAVA语言程序设计第五章[详版课资].ppt》由会员分享,可在线阅读,更多相关《JAVA语言程序设计第五章[详版课资].ppt(36页珍藏版)》请在三一文库上搜索。

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

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

3、,课堂优质,类(class/static)方法,可以直接被调用,而不需要生成任何实例 public class GeneralFunction public static int addUp(int x, int y) return x+y ; public calss UseGeneral public void method() int c = GeneralFunction.addUp(9,10); ,5,课堂优质,静态初始化程序,没有存在于任何方法体中的静态语句块。在加载该类时执行且只执行一次。 public Class StaticInitDemo static int i=5; s

4、tatic System.out.println(“Static code: i=”+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,6,课堂优质,Final 关键字, 被定义成final的类不能有子类。 例: final class Employee class Manager extends Employee 被定义成final 的成员方法

5、不能被重写。 被定义成final的成员变量不能改变。该变量实际上 是常量,一般大写,并赋值。 final int NUMBER = 100;,7,课堂优质,抽象类,一个类如果只声明方法而没有方法的实现,则称为抽象类。 必须在声明中增加 abstract 关键字,在无方法体的方法前 也要加上abstract。 Public abstract class Drawing public abstract void drawDot( int x, int y); public void drawLine(int x1, int y1, int x2,int y2) . / 调用drawDot()方法

6、抽象类也可有普通的成员变量或方法。,8,课堂优质,抽象类,抽象类不能直接用来生成实例。一般可通过定义 子类进行实例化。 可以生成抽象类的变量,该变量可以指向具体的一个 子类的实例。,Abstract class Employee abstract void raiseSalary(int i) ; class Manager extends Employee void raiseSalary(int i ) . ,Employee e = new Manager( ) ;,9,课堂优质,接口 interface, Interface 是在抽象类概念的基础上演变而来的。 一个interface所

7、有成员方法都是抽象的,并且只能 定义 static final 成员变量。,10,课堂优质,Interface 的含义,interface定义了一组行为的协议。两个对象之间通过这个协议进行通信。 interface 不属于类层次结构。不相关的类可以实现相同的接口。,11,课堂优质,Interface 示例,12,课堂优质,用implements代替extends声明子类,该子类中必须实现接口(及其超类)中的所有方法。 例:interface SayHello void printMessage( ); class SayHelloImpl implements SayHello void pr

8、intMessage( ) System.out.println(“Hello”); ,实现interface,13,课堂优质,Interface的使用,Interface可以作为一种数据类型使用。 如:,public class StockMonitor public void watchStock(StockWatcher watcher, String tickerSymbol, double delta) . ,14,课堂优质,Interface 中注意问题,不能向interface定义中随意增加方法。 public interface StockWatcher final Strin

9、g sunTicker = SUNW; final String oracleTicker = ORCL; final String ciscoTicker = CSCO; void valueChanged(String tickerSymbol, double newValue); void currentValue(String tickerSymbol, double newValue); ,public interface StockTracker extends StockWatcher void currentValue(String tickerSymbol, double n

10、ewValue); ,15,课堂优质,可以通过实现接口实现多重继承:一个类可只继承 一个父类,并实现多个接口。 interface I1 ; interface I2 ; class E . ; class 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 Japanes

11、e( );,16,课堂优质,类分组 package 语句,包(package)是相关类与接口的一个集合,它提供访问控制与命名空间管理。 Java平台中的类与接口都是根据功能以包组织的。 包机制的好处: 程序员容易确定包中的类是相关的,并且容易根据所需的功能找到相应的类。 每个包都创建一个新的命名空间,因此不同包中的类名不会冲突。 同一个包中的类之间有比较宽松的访问控制。,17,课堂优质,创建包,用package语句指定源文件中的类属于一个特定包: package 包名 包定义语句在每个源程序中只能有一条, 即一个类只能属 于一个包。 包定义语句必须在程序的第一行(之前可有空格及注释)。 包名用

12、“.” 分隔。,18,课堂优质,import 语句,将package 引入源程序,格式: import 包名.*; import 包名. 类名; import 语句必须在源程序之前,在package 声明之后。 package . /缺省是package . import . /缺省是import java.lang.* 类声明 .,19,课堂优质,包名与包中类的存储位置,包分隔符相当于目录分隔符,包存储的路径由包根路径加上包名指明的路径组成。 包的根路径由CLASSPATH环境变量指出。 %CLASSPATH%abc financeDept,20,课堂优质,源文件(.java)与类文件(.c

13、lass)的管理,源文件可以按照包名指明的路径放置。如,类文件也应该放在反映包名的一系列目录下。,21,课堂优质,一般将源文件与类文件分别存放,可采用如下方式:,源文件(.java)与类文件(.class)的管理,示例,22,课堂优质,高级访问控制,成员变量和方法有4种访问级别: public, protected, default(package), private ; 类有两种访问级别:public 或default。 修饰符的作用范围: Modifier Same class Same Package Subclass Universe public Yes YesYes Yes pro

14、tected Yes Yes Yes default Yes Yes private Yes,23,课堂优质,class Alpha private int iamprivate; private void privateMethod() System.out.println(privateMethod); class Beta void accessMethod() Alpha a = new Alpha(); a.iamprivate = 10; a.privateMethod(); ,高级访问控制-private,/ illegal,/ illegal,24,课堂优质,class Alp

15、ha private int iamprivate; boolean isEqualTo(Alpha anotherAlpha) if (this.iamprivate = anotherAlpha.iamprivate) return true; else return false; ,高级访问控制,注意:访问控制应用于class或type 层次,而不是对象层次。,25,课堂优质,允许类本身、它的子类、以及同一个包中其余的类访问这些成员。 package Greek; public class Alpha protected int iamprotected; protected void

16、protectedMethod() System.out.println(protectedMethod); package Greek; class Gamma void accessMethod() Alpha a = new Alpha(); a.iamprotected = 10; a.protectedMethod(); ,高级访问控制protected,/ legal,/ legal,26,课堂优质,package Latin; import Greek.*; class Delta extends Alpha void accessMethod(Alpha a, Delta d)

17、 a.iamprotected = 10; d.iamprotected = 10; a.protectedMethod(); d.protectedMethod(); ,高级访问控制protected,X,X,27,课堂优质,package Greek; class Alpha int iampackage; void packageMethod() System.out.println(packageMethod); package Greek; class Beta void accessMethod() Alpha a = new Alpha(); a.iampackage = 10;

18、 a.packageMethod(); ,高级访问控制package,28,课堂优质,内部类,内部类是在一个类的声明里声明的类。 Class A class B 内部类可作为类的一个成员使用。一般只在包容类中 调用。 内部类可以访问外包类的所有成员。,29,课堂优质,= = 运算符与equals( )方法, equals() 和 = = 比较两个引用是否指向相同的对象。 equals()方法在String, Date, File, 所有Wrapper类都重 写了该方法,改为比较内容。,30,课堂优质,Wrapper类, Wrapper将基本类型表示成类。 每个wrapper类对象都封装了基本类

19、型的一个值。 Primitive Data Type Wrapper Class booleanBoolean byteByte charCharacter shortShort int Integer longLong floatFloat doubleDouble,31,课堂优质,Wrapper类,Wrapper类中包含了很多有用的方法和常量。 如数字型Wrapper类中的MIN_VALUE 和 MAX_VALUE 常量,定义了该类型的最大值与最小值。byteValue, shortValue方法进行数值转换,valueOf 和 toString 实现字符串与数值之间的转换。,例:Wrap

20、per类对象的创建: Integer quantity = new Integer(123456); Double amount = new Double(345987.246);,32,课堂优质,Collection API - 集合类,一个集合类对象表示了一组对象,相当于一个容器。,33,课堂优质,Set, Set不能包含重复的元素。 两种Set实现:HashSet和TreeSet Set 接口定义: public interface Set / Basic Operations int size(); boolean isEmpty(); boolean contains(Object

21、element); boolean add(Object element); / Optional boolean remove(Object element); / Optional Iterator iterator(); ,34,课堂优质,List, List是有序的集合,元素可以重复。 List接口定义: public interface List extends Collection / Positional Access Object get(int index); Object set(int index, Object element); / Optional void add

22、(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); List的实现: ArrayList, LinkedList,Vector,35,课堂优质,Map,Map把键值映射到某个值。一个键值最多只能映射一个值。 Map 接口定义:,public interface Map / Basic Operations Object 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,36,课堂优质,

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1