Java程序设计案例教程--03-2.ppt.ppt_第1页
Java程序设计案例教程--03-2.ppt.ppt_第2页
Java程序设计案例教程--03-2.ppt.ppt_第3页
Java程序设计案例教程--03-2.ppt.ppt_第4页
Java程序设计案例教程--03-2.ppt.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java程序设计案例教程,北京大学出版社,第03章2,第03章 Java语言与面向对象,面向对象的基本概念 Java语言类与对象 面向对象的程序开发技术 Java语言系统定义类的使用 Java语言用户定义类的设计,3.2 Java语言系统定义类的使用,系统定义好的类即Java类库中的类。根据实现功能不同,划分不同的集合,每个集合是一个包,称为类库,又称为API(Application Program Interface)。Sun公司提供的类库称为基础类库JFC。,3.2.1 使用系统类的前提条件,使用系统类的前提条件是: 必须用import语句引入所用到的系统类 类库包中的程序都是字节码形式的

2、程序,利用import语句将一个包引入到程序中,就相当于在编译过程中将该包中所有系统类的字节码加入到用户程序中,这样就可以使用这些系统及其类中的各种功能。,3.2.2 常用系统定义的基础包,Object类 Object类是所有Java类的顶层类,即类继承树的根。 如果一个类没有使用extends关键字扩展任何类,则编译器自动将创建的类视为Object类的子类。 Object类的所有方法都被每个类继承。,3.2.2 常用系统定义的基础包,Math类 java.lang.Math类是final类,因此不能被其他类继承; 该类的构造方法是私有的,即声明为private,不能实例化一个java.lan

3、g.Math类; 该类定义的所有常量和方法均是public和static的,因此可以直接通过类名调用。,3.2.2 常用系统定义的基础包,Math类中定义的主要方法: public static double abs(double a) /获得一个双精度型值对应的绝对值 public static float abs(float a) /获得一个单精度型值对应的绝对值 public static int abs(int a) /获得一个整型值对应的绝对值 public static long abs(double a) /获得一个长整型值对应的绝对值 public static double

4、sin(double a)/获得一个正弦值 public static double cos(double a)/获得一个余弦值 public static double tan(double a)/获得一个正切值 public static double asin(double a)/获得一个反正弦值 public static double acos(double a)/获得一个反余弦值 public static double atan(double a)/获得一个反正切值 public static double ceil(double a) /取最接近但并不小于a的一双精度整数 pu

5、blic static double floor(double a)/取最近接但并不大于a的一双精度整数,3.2.2 常用系统定义的基础包,Math类中定义的主要方法: public static long round(double a) /获得一个四舍五入的长整数型值 public static int round(double a) /获得一个四舍五入的整数型值 public static double max(double a, double b) /取两双精度数之中的较大数 public static float max(float a, float b) /取两个单精度型数之中的较大

6、数 public static long max(long a, long b) /取两个长整数型数之中的较大数 public static int max(int a, int b) /取两个整数型数之中的较大数 public static double min(double a, double b) /取两双精度数之中的较小数 public static float min(float a, float b) /取两个单精度型数之中的较小数 public static long min(long a, long b) /取两个长整数型数之中的较小数 public static int mi

7、n(int a, int b) /取两个整数型数之中的较小数 public static double double random() /取一取值范围为0.01.0的随机数 public static double sqrt(doublee a) /获得一个平方根值,3.2.2 常用系统定义的基础包,封装类 Java语言中每个基本数据类型都有一对应的封装类。 基本数据类型封装类 booleanBoolean byteByte charCharacter shortShort int Integer longLong floatFloat doubleDouble,3.2.2 常用系统定义的基础

8、包,String类和StringBuffer类 String类是final类,不可以被继承,它是不可变类。 可以通过一个字符数组构造一个String类实例。 例如:char data=a,b,c; String str=new String(data); 指向同一个字符串对象: String str1= abcde“; String str2= abcde; 采用new方式创建两个字符串变量,即使字符串内容相同,指向的也不是同一个字符串对象: String str1=new String(abcde); String str2=new String(abcde);,3.2.2 常用系统定义的基

9、础包,1) java.lang 2) java.lang.reflect 3) java.io 4) java.util 5) java.util.zip 6) java.awt 7) java.awt.image 8) java.awt.datatransfer 9) java.awt.event,1. 核心类库: 含数据类型、 基本数学函数、 字符串 、 处理、 线程、 异常处理类等,2.核心类库: 是反射对象工具, 监视正在运行的对象并获得它的构造函数、方法和属性。,3.标准I/O类库: 基本I/O流、 文件I/O流、 过滤I/O流、 管道I/O流、 随机I/O流等。,4低级实用工具类库

10、: 处理时间Date类 变长数组Vector类 栈Stack类 杂凑表HashTable类,5低级实用工具类库 实现文件压缩类,6.构建图形用户: 低级汇图操作 图形界面组件、 布局管理 界面用户交互、 事件响应等,7.构建图形用户 处理、操作网上图片的工具,8.构建图形用户 处理剪贴板、字符串发送器等,9.构建图形用户 Event类的扩充 处理不同类型的事件,3.2.2 常用系统定义的基础包,10) java.applet 11) 12) java.corba 13) java.corba.orb 14) java.rmi 15) java.rmi.reistry 16) java.rmi.

11、server 17) java.security 18) java.security.acl 19) erfaces 20) java.sql,10. 实现运行于 Internet浏览器中的Java Applet的工具 类库。,11.网络功能类库低层网络通信编写FTP,Telnet等网上通信类访问网上资源进行CGI网关调用的类等。,12,13.其他面向对象语言开发的 部件。(可方便、动态地利用已经存在的软件),1416.远程方法调用用户程序可以在远程计算机(服务器)上创建对象,在本地计算机上使用该对象。,1719.安全控制管理对程序加密把Java Applet

12、 进行标记,使之具有与完整的Java程序有相同的安全性。,20. 访问各种数据库包JDBC。 可访问: Oracle, Sybase, DB2, SQLServer等,自学所有类库的查找方法,参考资料: Java2 API大全 电子工业出版社,列出Java中所有软件包页面,软件包(总说明、包内容说明)页面: 接口Interfaces/类classes/异常Exceptions/错误Errors,类和接口页面: 最顶级的类为Object/直接继承的类是Panel/,说明有哪些软件包、类、方法等用了该类的任何一部分内容的页面。,软件包、类和接口的层次图页面。 (比class页面详细),所有不推荐使

13、用类的功能页面提示。,按字母顺序列出Java中的所有类、接口、构造方法、方法和域。,J,使用系统定义类的三种方式,1 继承系统类 例:每个Java Applet的主类都是Java.applet 包中 Applet类的子类。 2 直接使用系统类 例:字符界面系统标准输出的方法引用 System.out.println( ) 3 创建系统类的对象 例:图形界面接受输入时创建系统类的对象 TextField input,3.2.3 节小结,系统类使用前提; 常用系统定义类的记忆; 类库的查找方法; 系统定义类的使用。,3.2.4 节重点与难点,节重点 使用系统定义类的前提 类库的查找方法 使用系统定

14、义类的三种方法 节难点 常用系统类的记忆 使用系统定义类的三种方法,3.3 Java语言用户定义类的设计,Java程序设计主要内容 Java程序设计源代码文件包含3个要素: 包的设计 类的引入 类与接口的定义,3.3.1 Java程序设计主要内容,package包的设计 声明包的格式 package ; 注意:声明语句要写在源程序文件的第一行。 设置包的路径 创建一个和包同名的文件夹。 例如:d:javayyyFirstpackage,将包含包的源程序文件编译后产生的.class字节码文件放到此文件夹中。 设置环境变量CLASSPATH: Set classpath=.;d:jasdk1.4.

15、2;d:javayyy,3.3.1 Java程序设计主要内容,包的引用 使用包名、类名前缀 在要使用的属性或方法名前加上类名作为前缀(同类)。 在要使用的其它包中的类需在类名前再加上包名作为前缀。 加载整个包 使用import语句加载其它包中的一个类或引入整个包。,例如: CardClasses.D200 my200=new CardClasses.D200(12345,12); System.out.println(my200.toString( ); 例如: import CardClasses.*; import java.awt.*;,import 程序包名.类名; import 程序

16、包名.*;,包是可以有任意多层子包。包和子包 的名字之间用点号隔开。,3.3.1 Java程序设计主要内容,3.3.1 Java程序设计主要内容,有关包加载的补充说明 包:若干个扩展名为class的文件集合在一起就形成了包。 Java主包:Java 的一层包,名为java; Java主子包:Java的二层包,名为lang; Java标准的扩展包:名为javax,最多只有三层。 例如:javax. swing.tree,3.3.1 Java程序设计主要内容,类与接口的设计 package ; import ; import ; 修饰符 class extendimplements /类设计 修饰

17、符 类型 类变量1; /数据成员 修饰符 类型 类变量1; 修饰符 类型 实例变量1; 修饰符 类型 实例变量2; 修饰符 类型(参数列表) /方法成员 局部变量; 方法体; 修饰符 类型(参数列表) /方法成员 局部变量; 方法体; ,接口设计将在后续章节中学习,3.3.2 类成员访问控制及类访问控制,类成员访问控制 数据成员的作用域 public公用变量修饰符,被它所修饰的变量可以被所有类访问。 protected保护变量修饰符,除提供包内的访问权限外,protected修饰的变量允许继承此类的子类访问 private私有变量修饰符,阻止其他类对private修饰的变量访问,仅提供给当前类

18、内部访问的变量,private变量不能被继承。private修饰符可以隐藏类的实现细节。 上述3种访问修饰在访问级别上是依次降低的。,3.3.2 类成员访问控制及类访问控制,类成员访问控制 数据成员的作用域 Java中除了上前述3种修饰符外,还存在第4种修饰符 不加任何访问关键字的默认访问模式。它只允许同包内进行访问,不同包之间不允许相互访问。 final常量修饰符,将变量声明为final可保证所修饰的变量在使用中不被改变。被声明为final的变量必须在声明时给初值,而且在以后的引用中只能读取,不可修改。 前述5种访问修饰的变量均为类的实例变量。 static类变量修饰符,成员变量前面加上st

19、atic修饰符,表示该成员变量为类变量。不需要创建对象,就可以利用“类的引用”来访问static成员。,3.3.2 类成员访问控制及类访问控制,类成员访问控制 方法成员的作用域 方法成员也是通过添加修饰符来限定其作用域的,即限定其他类或本类成员对它的访问权限。 访问权限修饰符指出满足什么条件时该方法成员可以被访问例如:public, private, protected等 非访问权限修饰符指明数据成员的使用方式例如:static, final, native, abstract, synchronized等非访问权限修饰符。,3.3.2 类成员访问控制及类访问控制,类成员访问控制 final方

20、法是指最终方法。它能被子类继承和使用,但不能在子类中修改或重新定义。它的主要目的是利用本地资源扩展Java功能,而与Java本身的机制无关。 native方法是指本地方法。当在方法中调用一些不是由Java语言编写的代码或者在方法中用Java语言直接操作计算机硬件时要声明为native方法。可以通System.load Library()方法装入。如果本地方法没有装载成功,则会有异常被抛出。 abstract方法是抽象方法。是指还没有实现的方法,即没有方法体,所以abstract方法不能出现在非抽象类中。 synchronized方法用于多线程编程。多线程在运行时可能会同时出现存取一个数据,为避

21、免数据的不一致性,应将方法声明为synchronized方法,对数据进行加锁,以保证线程的安全。,3.3.2 类成员访问控制及类访问控制,类的访问控制 类的修饰符 无修饰符的情况。如果一个类的前面无修饰符,则这个类只能被同一个包里的类使用。 public修饰符。由public修饰的类为公共类,它可以被其他包中类使用。 final修饰符。由final修饰的类为最终类,它不能被任何其他类所继承,即它不能派生子类。 abstract修饰符。由abstract修饰的类为抽象类,其作用在于将许多有关的类组织在一起,提供一个公共的基类,为派生类奠定基础。,3.3.2 类成员访问控制及类访问控制,类的访问控

22、制 修饰符不能在以下情况下同时使用 abstract不能与final并列修饰同一个类。 abstract不能与private,static,final或native并列修饰同一个方法。 abstract类中不能有private的成员(包括属性和方法)。 abstract方法中不能处理非static的属性。,3.3.3 类的封装,封装的概念 封装就是对属性和方法的载体类,只能通过其提供的接口(方法)来访问,而把实现细节隐藏起来。也就是说,具体实现对程序员来说是透明的。 封装的好处在于对类内部的改变,不会影响到其他代码。在一个完整封装的类中,一般定义方式是将其所有成员变量定义为private,而将

23、访问这些变量的方法定义为非private类型,这样可以在类的外部间接地通过指定的接口来访问这些变量,而不直接获取成员变量。,3.3.3 类的封装,class Encapsulation private String name; public int age; public Encapsulation() name=private; age=25; public void display() System.out.println(temp); /不能解析符号,temp作用域在inc()方法内 System.out.println(name); System.out.println(inc(); private int inc() int temp; temp=age+1; return temp; ,例3-6 封装的概念。,3.3.3 类的封装,public class En_Test public static void main(St

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论