![[计算机软件及应用]Java2语言核心技术.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/5/bd8dc980-5e46-4cb4-a32d-bc7785643e52/bd8dc980-5e46-4cb4-a32d-bc7785643e521.gif)
![[计算机软件及应用]Java2语言核心技术.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/5/bd8dc980-5e46-4cb4-a32d-bc7785643e52/bd8dc980-5e46-4cb4-a32d-bc7785643e522.gif)
![[计算机软件及应用]Java2语言核心技术.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/5/bd8dc980-5e46-4cb4-a32d-bc7785643e52/bd8dc980-5e46-4cb4-a32d-bc7785643e523.gif)
![[计算机软件及应用]Java2语言核心技术.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/5/bd8dc980-5e46-4cb4-a32d-bc7785643e52/bd8dc980-5e46-4cb4-a32d-bc7785643e524.gif)
![[计算机软件及应用]Java2语言核心技术.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/5/bd8dc980-5e46-4cb4-a32d-bc7785643e52/bd8dc980-5e46-4cb4-a32d-bc7785643e525.gif)
已阅读5页,还剩205页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java2语言核心技术讲义 目 录第1章 Java面向对象编程技术31.1 面向过程的编程技术31.2 面向对象的编程技术51.3 Java语言中的面向对象技术71.4 Java语言中类编程的深入91.5继承与派生161.6 Java中的接口181.7 继承与派生时的多态性201.8 Java中的包241、9 课后复习题25第2章 Java中的数组352.1数组的基本概念352.2 编程应用数组362.3 多维数组362.4 数组的应用深入372.5 课后复习题39第3章 实用的工具类及核心API413.1 String类413.2 对字符串进行各种特殊的操作423.3 StringBuffer类483.4包装类wrapper513.5 System类533.6 Math类543.7 Date(日期)类553.8 Calendar(日历)573.9 课后复习题59第4章 Java中的集合及应用654.1集合的概念654.2 Iterator接口及应用664.3 Set 接口及各个实现类684.4 List 接口及各个实现类704.5 Map 接口744.6 Collections类764.7 课后复习题77第五章 异常处理技术855.1 Java中的异常技术855.2 Java的异常处理机制905.3 Java中的异常类的层次结构925.4 Java中异常编程规则945.5 声明自己的异常类965.6 课后复习题98第6 章 Java线程及多线程技术及应用1026.1线程基本概念1026.2 线程创建与启动1026.3 线程的状态控制1036.4线程的调度和优先级1106.5线程同步互斥1126.6生产者消费者问题1216.7 课后复习题128第7章 Java IO技术及应用1317.1 Java IO流类1317.2 Java IO流中的字节流1317.3 Java IO 流中的文本字符流1347.4 Java IO 流中的标准预定义流1367.5 文件和目录属性信息包类File1387.6 Java IO流类缓冲流类1417.7 文本打印print输出流1447.8 其它形式的数据流1447.9 课后复习题147第8 章 网络编程技术1538.1网络基础知识1538.2基于Http协议的网络编程URL类1548.3基于Http协议的网络编程URLConnection类1588.4基于TCP/IP的网络编程1618.5基于UDP协议编程1678.6 课后复习题169第9章Java JAR 打包技术1779.1 Jar主要的命令及应用1779.2 MANIFEST.MF文件1799.3利用eclipse打jar包181第10章 单元复习题18410.1李静 老师的单元试题18410.2胡艳芳 老师的单元试题19210.3由大志 老师单元试题195104 张耀生 老师单元试题20110.5 余英瀚 老师单元试题207本讲义的作者为:杨少波(第1、10章)、张耀生(第2、3和7章)、胡艳芳(第4、5和9章)、李静(第6、8章)。第1章 Java面向对象编程技术1.1 面向过程的编程技术1、什么是面向过程编程技术面向过程就是分析出所需要开发的应用的系统在解决某个问题时所需要的步骤,然后用代码(当然应该把这些代码设计为各个函数或者过程)来表示这些步骤的具体实现。注意:而面向对象是把构成问题的各个方面分解成各个对象,并用代码来实现对象之间的交互。建立对象的目的不是为了完成一个过程或者流程,而是为了描述各个对象在问题空间中的行为。(1)面向过程程序设计方法的示例#include stdio.hint add(int a, int b) /对数据的操作(方法或者函数) return a+b;int main() /数据(属性或者状态) int x=1, y=1; int sum=add(x,y); print(Sum=%d,sum);面向过程程序的程序中的数据与方法是相互分离的!而面向对象程序中的数据与方法是相互组合在一起的。当数据(也就是问题的属性或者状态)发生变化,需要修改大量的关联的方法的程序模块。(2)面向对象程序设计方法的示例import java.io.*;public class Add /数据(属性或者状态) private int sum; public int add(int a, int b) /对数据的操作(方法或者函数) sum=a+b; return sum; public void showSum() /对数据的操作(方法或者函数) System.out.println(Sum=+sum); public static void main(String args)Add oneAdd=new Add();oneAdd.add(1,2);oneAdd.showSum(); 由于面向过程编程的语言中一般都提供了对全局变量的支持,这样将导致的一个结果是在A处修改了某个变量的值,却无意中影响了B处的结果。2、程序的典型结构具有一个开始和结束的程序或者程序块,并且程序执行的每一步都由三部分组成:顺序、选择或者循环结构,实现这种思想的最典型的语言就是C。3、面向过程编程在开发中所体现出的特性(1) 自顶向下,逐步分解由于表达需求的系统结构图会按照业务功能领域逐层分解,将一个大的业务功能分解为一些小的功能。最后就成了“系统功能模块”或“子系统划分”的需求了。 (2) 根据DFD或者 ER图来决定各个模块之间的数据传递接下来会为每个模块或子系统进行功能实现的设计,通过画数据流图,把模块之间的数据接口和内部处理逻辑表达出来,并且用模块的功能及其对数据的使用关系的链来表达对外部请求的响应过程和给外界的反馈信息。 实体关系图则把重点放在对持久数据的存储结构方面,以便用关系型数据库保存和查找信息,实现功能运行与数据存储的结构无关性。 4、面向过程程序设计的特点(1)程序设计数据结构算法(2)程序内容过程过程调用5、面向过程编程实现的基本方法(1)过程式的程序编程是一种自上而下的设计方法设计者用一个main函数概括出整个应用程序需要做的事,而main函数由对一系列子函数的调用组成。对于main中的每一个子函数,都又可以再被精炼成更小的函数。(2)重复这个过程,就可以完成一个过程式的编程其特征是以函数为中心,用函数来作为划分程序的基本单位,数据在过程式设计中往往处于从属的位置。6、面向过程编程所出现的问题(1)在依赖关系上引发一系列变动图中的箭头代表了函数间的调用关系,也是函数间的依赖关系。如图所示,main()函数依赖于其子函数,而这些子函数又依赖于更小的子函数,而在程序中,越小的函数处理的往往是细节实现,这些具体的实现,又常常变化当需求发生变化时,我们经常要回来改动这些细节实现。(2)违背了“依赖倒置原则” (DIP-Dependency Inversion Principle)依赖倒置原则就是建立在抽象接口的基础上的。Robert Martin这样描述依赖倒置原则Martin 1996:l 上层模块不应该依赖于下层模块,它们共同依赖于一个抽象。l 抽象不能依赖于具体,具体依赖于抽象-也就是“系统的核心逻辑”不依赖于“具体的实现细节”。而在结构化方法中,就是程序的核心逻辑依赖于外延的细节,程序中本来应该是比较稳定的核心逻辑,也因为依赖于易变化的部分,而变得不稳定起来,一个细节上的小小改动,也有可能在依赖关系上引发一系列变动。(3)违背了MVC中的“V表示”与“M模型”要求分离的原则因为用户交互的程序(V)同程序的核心逻辑(M)混淆在一起。在过程式设计中,main()函数处于一个非常重要的地位。设计者正是在main()函数中,对整个系统进行一个概括的描述,再以此为起点,逐步细化出整个应用程序。然而,这样做的一个后果,是容易将一些较外延和易变化的逻辑(比如用户交互)同程序的核心逻辑混淆在一起。(4)没有体现出数据所表示的业务含义并抛弃了业务信息中的各个数据之间的关系的信息至于用户在做出一件有什么业务意义的行为的信息在结构化模型中基本被抛弃,而这些信息在面向对象的方法中得到保留并作为外部封装的信息,也就是我们以后所要应用到的业务实体(Value Object)以及各个业务实体之间的关系(关联、继承、组合和聚合)。下面为对象之间的各种关系的示例代码。class Computerprivate CPU intelCPU=null;/ Computer 与CPU和HardDisk之间为组合关系private List someHardDisk=null; private Printer hpPrinter =null;/ Computer 与Print之间为聚合关系private UserInfo oneUserInfo=null;/Computer与UserInfo为“一对一”的关联关系public Result calculate(Data oneData)/ Computer 与Data之间为“依赖”关系class PCComputer extends Computer/ PCComputer 与Computer之间为“继承”关系class CPUclass HardDiskclass Printerclass UserInfo1.2 面向对象的编程技术1、面向对象(OO)的基本概念(1)面向对象的基本思想面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范。其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。(2)如何应用面向对象的基本思想从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。2、面向对象程序设计方法的编程语言 (1)Smalltalk由美国加州的Xeror公司于70年代初研制的纯OOP语言,适用于小型机;(2)C+是在面向过程程序设计方法基础上新增OOP成分,因而是一种混合型语言。其流行的原因归功于C语言的普及;但它具有与平台(CPU、OS类型)有关性。(3)Java由Sun公司于1995年发布,适用于Internet网开发和应用的纯OOP语言。3、面向对象程序设计方法的编程优点(1)可重用性(2)可扩充性(3)可管理性4、面向对象程序设计方法的四个基本机制:抽象、封装、继承与派生、多态性class Studentprivate int ID;private String name;private int age;private String department;private int level;public Student()public void setName(String newName)name=newName;public void studyCourse(String courseContent)public void trainSelf(String item) public static void main(String args) Student zhang=new Student(); zhang. studyCourse (“面向对象技术”); zhang.trainSelf(“跑步”); 5、面向对象程序设计中的抽象(1)含义:对具体问题(对象)进行概括,抽出这一类对象的公共性质并加以描述的过程。(2)如何实现抽象:对问题进行分析,提取其属性和行为。 实例1:窗口这一类对象 数据抽象- int TopX,TopY, DownX,DownY, Color 代码抽象- OpenWindow()、CloseWindow()、MoveWindow()、ChangeWindow() 实例2:自行车这一类对象 数据抽象- int 型号, char *品牌, int 换挡数 代码抽象- Break()、SpeedUp()、ChangeShift()、Run()、Stop() 实例3:钟表这一类对象 数据抽象- int Hour, int Minute, int Second 代码抽象- SetTime()、ShowTime() 实例4:计算机这一类对象 数据抽象- int型号, char *品牌, int CPU的主频大小 代码抽象- PowerOn()、Compute()、PowerOff()实例5:人这一类对象(人类-地球上的所有人) 数据抽象- char * 姓名, char *性别, int 年龄,int 身分证号 代码抽象- GetCloth()、EatFood()、GoHome()、Step()(生物属性角度)或者: 代码抽象- AddPerson()、DeletePerson()、PrintData()、Change()(社会属性角度)要点:对同一问题可以有不同的抽象结果,这取决于程序员看问题的视角6、面向对象程序设计中的封装(1)封装性l 提供将所抽象出的问题的属性(数据成员)和行为(代码成员)相组合的一种机制-并尽可能隐蔽对象的内部细节l 它能将这二类成员再组合在一起,形成对象或实体。(2)如何达到封装性(基本的要求)把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。class Student /描述学生的各个属性(特征) /体现学生所应该实现的行为或者服务(对外而言)(3)目的l 增强使用的安全性,使用者不必了解具体的实现细节,而只需要通过设计者提供的外部接口来操作它;l 实现高度模块化,从而产生出软件构件(控件);利用控件快速地组装程序。(4)封装的基本要求:l 有一个特定的边界:所有的内部变化都限制在此边界内(类定义的 );l 有外部接口:此对象利用它与其它对象发生关联(public成员);l 有特定的访问权限:在对象外部不能访问或修改受保护的内部实现细节(private成员)。class Student private int ID; /.其它的属性定义public void studyCourse(String courseContent)/.其它的行为定义特定的边界外部接口特定的访问权限 (5)在编程中如何遵守封装的原则要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的“交叉感染”,使软件错误能够局部化,大大减少查错和排错的难度。Student zhang=new Student();=”张三” ;/错误,不能直接访问成员属性 zhang.setName(“张三”);/而应该通过成员方法获得对属性数据的操作访问(6)在Java中是如何实现封装通过定义出某类问题所在的类型,并对该类型进行描述其成员。 class SomeClass /描述该类所对应的问题的各个属性(特征) /体现该类所应该实现的行为或者服务(对外而言) 1.3 Java语言中的面向对象技术1、Java语言中的类的基本概念(1)类的基本概念l 分类的原则是抽象把众多的事物归纳、划分成一些类是人类在认识客观世界时经常采用的思维方法。l 类是具有相同属性和服务的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。(2)类是一个独立的程序单位在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明(属性通常被称为成员变量)和服务说明(服务通常被称为方法或函数)两个主要部分。class Student /描述学生的各个属性(特征) /体现学生所应该实现的行为或者服务(对外而言)如:class Person public OutObj Eat( Food obj)public void Step( )private String Name;private int Age; (3)Java语言中的类的简单定义形式 class 类名 各个成员的定义; 要点:类的定义只是一种模型说明,并不是代表具体的东西(对象)。只有将类实例化后才产生出对象。(4)类与对象的关系类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。(5)类的结构。 在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般-具体结构关系,整体-部分结构关系。 l 一般具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。 l 整体部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。2、Java语言中的对象的基本概念(1)什么是对象对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位-是类的一个变量。从更抽象的角度来说,对象是问题域或实现域中某些事物的一个抽象-它是一组属性和有权对这些属性进行操作的一组服务的封装体。(2)对象的组成一个对象由一组属性和对这组属性进行操作的一组服务(方法)组成。而其中的属性反映该事物在系统中需要保存的信息,而方法则体现出它所能够发挥出的作用;(3)对象所体现出的特点l 它具有特定的属性、行为和事件l 通过对象的成员变量来维护它的属性l 通过对象的成员方法,来实现它的行为。l 通过对象的事件来响应外部环境(4)声明方式: 类名 对象名 如: Person I;(5)对象的实例化(为对象具体地分配出内存空间)对象名=new 类名();如:I=new Person();要点:可以将对象的声明与实例化合二为一(Java中的对象只有实例化后,系统才真正创建出它并为它分配出内存空间):Person I=new Person(); /对象的声明与实例化合二为一(6)调用对象的成员:对象名.成员名;I.Eat(苹果);3、对象的生存期:创建,使用,删除三个阶段。(1)创建对象:声明并实例化(为它分配内存空间)Person I=new Person( ); /声明和实例化合二为一,如定义出带参数的构造函数,也可以Person I= new Person(Yang);/实例化时并初始化(2)使用对象:利用对象名来操作访问其public型的成员函数或成员数据: I.Eat(苹果);要点:由于OOP的数据封装特性,成员数据一般都被隐藏,因而不推荐采用对象直接访问类中的成员数据来改变对象的状态,而是通过对象的public型的成员函数来访问对象的成员数据;利用对象不能访问类中的private成员(I.Age=30; /错误)。(3)对象的删除(清除);l 当对象失除其作用域时,系统自动在后台清除这些对象public void myFun() Person I=new Person( ); /此时I 对象将被删除,寿命不可控。l 用户也可强行清除某一对象(将它置为null 即可)public void myFun() Person I=new Person( ); I=null;/此时I对象将被删除,寿命可控。class Student public void studyCourse(String courseContent)Teacher teacherYang=new Teacher();String nowCourse=teacherYang.teachCourse(courseContent); underStandSelf(nowCourse);服务的标识返回信息4、面向对象中的消息的基本概念(1)什么是消息消息就是向对象发出的服务请求,它应该包含下述信息:提供服务的对象标识、服务标识、输入信息和回答返回信息。(2)示例代码:请见右面的代码示例及说明。服务的对象标识输入信息1.4 Java语言中类编程的深入1、类定义的一般方式(1)方式一:public class 类名 (2)方式二:public class 类名extends 父类名 继承与派生形式的类定义(指明父类名); (3)方式三:public class 类名extends 父类名 implenents 接口名 继承与派生并实现某一接口形式的类定义; 2、类的种类选项:public,abstract,final,缺省末指定共四种类的修饰符(1)public 公有类l 编程特性:该类可以被本包中或其它包中类成员函数使用。l 编程要求:一个Java源程序中只允许定义出一个public型的类;并且此时源程序的文件名应与pubulic类的类名同名,文件扩展名为*.java。请见下面的代码示例及说明。package com.px1987.someone;import com.px1987.sometwo;public class MyClassOnepublic void someOneFun()HeClassOne obj=new HeClassOne ();MyClassTwo two=new MyClassTwo();class MyClassTwopublic void someTwoFun()HeClassOne obj=new HeClassOne ();MyClassOne one=new MyClassOne ();package com.px1987.sometwo;import com.px1987.someone;public class HeClassOnepublic void someOneFun()MyClassOne obj=new MyClassOne ();HeClassTwo two=new HeClassTwo ();class HeClassTwo public void someTwoFun()HeClassOne obj=new HeClassOne ();MyClassOne one=new MyClassOne ();引入对方的包引入对方的包缺省未指定的类只能在本包中访问生成对方类对象以访问其方法生成对方类对象以访问其方法缺省未指定的类只能在本包中访问l 编程应用:一般可将Java Application 中的main()函数所在的类或Java Applet中的init()函数所在的类设计为public类。(2)abstract 抽象类(没有具体对象的概念类)l 编程特性:包含有抽象函数(只有函数原型而没有具体函数体定义的成员函数)的类(它定义了所有子类的共同属性与方法集);但并不是所有的方法都是抽象函数(如果所有的方法都是抽象函数,那应该将它设计为接口)l 编程要求:它一般应是父类并且必须被继承和派生,在派生类中应重写抽象函数;抽象类不能实例化其对象,而应采用其派生类来实例它(此时执行派生类中定义出的成员方法);抽象类中的抽象函数不能设计为private成员。abstract class Person /此时的“人”是那个国家的人?不确定(即为抽象的人) public abstract OutObj eatFood(Food Obj);/由于全世界的各个民族在吃的方式上有差别public void Step()/全世界的各个民族的人在“步”的行为方式上是一样的(两条腿走路)class Chinese extends Person public OutObj eatFood(Food Obj)/ 中国人可以按照中国人的习惯设计自己的方法体,但都遵守共同的行为要求。class American extends Person public OutObj eatFood(Food Obj)/ 美国人可以按照美国人的习惯设计他们的方法体,但也要遵守共同的行为要求。Person mem=new Person(); /该程序是错误的,因为抽象类本身是不能直接实例化对象的Person men=new Chinese(); /该程序是正确的,抽象类应该要通过其实例类型的子类进行对象实例化Person women=new American(); /该程序是正确的,抽象类应该要通过其实例类型的子类进行对象实例化l 编程应用:抽象类主要是为派生类提供功能实现的模型和要求。(3)final(定止类,终极类)l 编程特性:该类不允许再被继承与派生;但其内的成员方法都有函数体定义final class NetCommunicatepublic void Tcp_IP()public void NetBEUI()class MyNetComm extends NetCommunicate/错误,NetComm类不允许再被继承因为网络通讯中的这些协议已经标准化了,用户的子类不能而且也没有必要重写它们 !对系统中的核心功能类加以保护。l 编程要求:final不能与abstract组合在一起使用来说明一个类,否则会相互矛盾。abstract final class Person /错误 public abstract OutObj eatFood(Food obj); l 编程应用:如果一个类编写的已较丰富,或基于安全性考虑,不希望派生者再对它进行派生以覆盖其特定的成员函数的应用场合(固定的标准功能的类)。(4)缺省末指定的类该类只能被它所在的包中所有类使用。一般将程序中需要共享的类设计为public类,而不共享的类可以设计为缺省末指定的类。3、类中的成员定义(1)成员数据(属性)定义的格式(2)成员数据的访问控制选项:l public l privatel protectedl default(缺省末定义)4、public访问控制选项用法public它可被所有形式的类访问(通过各级对象名或在本类和子类中的成员中访问)package com.px1987.someone;import com.px1987.sometwo;public class MyClassOnepublic void someOneFun()/ public 类型的成员方法public void someTwoFun(MyClassOne obj)someOneFun();obj.someOneFun();class SubClassOne extends MyClassOne public void someThreeFun (MyClassOne obj)someOneFun();obj.someOneFun();One ();package com.px1987.sometwo;import com.px1987.someone;public class HeClassOnepublic void SomeOneFun(MyClassOne obj)obj.someOneFun();class SubClassTwo extends MyClassOne public void SomeTwoFun(MyClassOne obj)someOneFun();obj.someOneFun();引入对方的包引入对方的包可以在本类中直接访问或通过对象访问它也可以在另一个包中通过对象访问它在同一包中也可以在子类中直接访问或通过对象访问它在另一包中也可以在子类中直接访问或通过对象访问它5、protected访问控制选项的用法protected它可以被相同包或不同包中的这个类本身及它的子类的成员访问;但通过对象来访问时,只可以被相同包中的任何形式的类对象来访问,而不能被不同包中的任何形式类对象访问。请见下面的代码示例及说明。package com.px1987.someone;import com.px1987.sometwo;public class MyClassOneprotected void someOneFun()/ protected类型的成员方法public void someTwoFun(MyClassOne obj)someOneFun();obj.someOneFun();class SubClassOne extends MyClassOne public void someThreeFun (MyClassOne obj)someOneFun();obj.someOneFun();One ();package com.px1987.sometwo;import com.px1987.someone;public class HeClassOnepublic void SomeOneFun(MyClassOne obj)obj.someOneFun();class SubClassTwo extends MyClassOne public void SomeTwoFun(MyClassOne obj)someOneFun();obj.someOneFun();引入对方的包引入对方的包可以在本类中直接访问或通过对象访问它不可以在另一个包中通过对象访问它在同一包中也可以在子类中直接访问或通过对象访问它但可以在另一包的子类中直接访问它也不可以在另一包的子类中通过对象访问它6、缺省末指明的访问控制选项的用法package com.px1987.someone;import com.px1987.sometwo;public class MyClassOnevoid someOneFun()/缺省末指明访问控制类型的成员方法public void someTwoFun(MyClassOne obj)someOneFun();obj.someOneFun();class SubClassOne extends MyClassOne public void someThreeFun (MyClassOne obj)someOneFun();obj.someOneFun();One ();package com.px1987.sometwo;import com.px1987.someone;public class HeClassOnepublic void SomeOneFun(MyClassOne obj)obj.someOneFun();class SubClassTwo extends MyClassOne public void SomeTwoFun(MyClassOne obj)someOneFun();obj.someOneFun();引入对方的包引入对方的包可以在本类中直接访问或通过对象访问它不可以在另一个包中通过对象访问它在同一包中也可以在子类中直接访问或通过对象访问它不可以在另一包的子类中直接访问它也不可以在另一包的子类中通过对象访问它缺省末指明:可被这个类本身和同一包中的所用其它子类成员访问(但不同包中的子类成员不能访问它,这是与protected的区别);通过对象来访问时,则只能在相同包中的以该类或它的子类对象来访问。请见下面的代码示例及说明。7、private访问控制选项的用法package com.px1987.someone;import com.px1987.sometwo;public class MyClassOneprivate void someOneFun()/ private类型的成员方法public void someTwoFun(MyClassOne obj)someOneFun();obj.someOneFun();class SubClassOne extends MyClassOne public void someThreeFun (MyClassOne obj)someOneFun();obj.someOneFun();One ();package com.px1987.sometwo;import com.px1987.someone;public class HeClassOnepublic void SomeOneFun(MyClassOne obj)obj.someOneFun();class SubClassTwo extends MyClassOne public void SomeTwoFun(MyClassOne obj)someOneFun();obj.someOneFun();引入对方的包引入对方的包只可以在本类中直接访问而不能通过对象访问它不可以在另一个包中通过对象访问它在同一包中也不可以在子类中直接访问或通过对象访问它不可以在另一包的子类中直接访问它也不可以在另一包的子类中通过对象访问它仅能被本类的各个成员函数使用,不能被任何形式的类对象或子类成员使用。请见下面的程序示例。8、成员数据的种类(1)static静态变量l 作用:它是类的变量(该类的各个对象共享某一相同的属性量的值,即与具体的对象无关,如中国人的肤色例);可以不必在创建对象时就可以访问它。l 形式:它也可以为一个static对象成员。static myObject obj=new myObject( );(2)使用规则利用“类名.成员名”来访问它。通过下面的示例可以区分实例成员与类成员的使用不同。class ChineseString chineseName;/实例变量 private static Color chineseSkinColor=Color.yellow;/类变量区分类方法与实例方法的使用不同public Chinese(String Name)this.chineseName=Name;public static Color getChineseSkinColor()/类方法 return chineseSkinColor;/在类方法中只能访问类变量 public String getChineseName()/实例方法System.out.println(chineseSkinColor.toString()/访问类变量return this.chineseName;/访问实例变量(2)final定义符Java中的常量定义,必须有初值定义(一般将final常量设计为static型,各个对象共享它,同时也节省内存空间)。class Circle 访问控制方法的种类返回值类型方法名(形参定义)方法体的代码;public static final double PI=3.1415926;privateint X0, Y0, R;9、类中的成员方法定义的一般格式10、区分实例方法与类方法在编程上的不同(1)实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,但类方法不能对当前对象的实例变量进行操作;(2)实例方法必须由实例对象来调用,而类方法即可以由实例对象来调用,也可以由类名来调用。(3)在实例方法中可以使用 this和super,而在类方法中不能使用 this和super。类方法是静态方法实例演示如下:Chinese MrZhang=new Chinese(“Zhang Ming”);MrZhang.getChineseName();/实例方法必须由实例对象来调用MrZhang.getChineseColor();/类方法即可以由实例对象来调用Chinese. getChineseColor();/也可以由类名来调用11、final成员函数在派生类中不能重写基类中的final成员函数(防止子类对父类中的关键性方法的错误地重定义)。class NetCommunicate public final void TCP_IP()public void otherFun()class MyNetCommunicate extends NetCommunicatepublic void TCP_IP()/错误,在派生类中不能重写基类中的final成员函数。public void otherFun()/该方法(非final方法)仍然可以被重写12、abstract成员函数类中只有函数原型定义而无具体的函数定义体的成员函数。一般用于对问题的初始描述与功能要求的定义。abstract class Personpublic abstract Outobj eat(Food obj); /功能要求的定义class Chinese extends Personpublic Outobj eat(Food obj) /实现抽象基类中的具体功能要求13、构造方法与类名同名并且无任何返回值类型定义(因为它只是用来创建对象)的public型成员函数。请见上面的DoctorStudentInfo类的构造方法定义,该构造方法为缺省形式的构造方法。14、重载方法类体中以“同名”而“不同形参定义出”的成员方法。其主要的作用是实现同一种行为多种不同的操纵形式,但要注意重载方法的基本要求:“同名”而“不同形参定义”。下面的示例中的各组方法都不是重载方法!而是重复定义的方法。15、终结方法(1)终结方法:在对“对象”进行垃圾收集前,Java运行时系统会自动调用对象的finalize() 方法来释放系统资源。(2)主要的作用:实现对象在被清除之前还能够完成某种功能。1.5继承与派生1、Java中的继承与派生(1)有关的基本术语l 继承:是指在已有类的基础上快速构造出新类的过程。l 派生:是指在构造新类的同时并新增新的特性的过程。l 基(父)类:被继承特性的类;派生(子)类:在基类的基础上新创建出的类。(2)应用继承的目的:对现有系统或程序加以重用,并且还能扩充和完善现有系统。2、为什么要应用继承和派生(1)实体之间天然存在这样的特性由于实体(对象)之间不仅在横向方面具有关联特性,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品制造合同样本
- 二手车合同样本
- 个人加工高端设备合同样本
- 2009版合同标准文本
- 共享加盟合同标准文本
- 买卖儿童农村房屋合同样本
- 公司中途入股合同标准文本
- 业主订制家具合同样本
- 优惠仓库租赁服务合同样本
- 买抵押车合同样本
- 电动葫芦的安全操作措施
- 河南省绿色建筑评价表(建筑专业)
- 2022-2023学年山东省济南市市中区八年级(下)期中语文试卷-普通用卷
- 江铃系列维修手册
- 造价咨询公司组织机构及人员岗位职责
- 中国文化科举制度的等级
- GB/T 700-2006碳素结构钢
- 多发性骨髓瘤NCCN患者指南中文版2022
- GB/T 13441.4-2012机械振动与冲击人体暴露于全身振动的评价第4部分:振动和旋转运动对固定导轨运输系统中的乘客及乘务员舒适影响的评价指南
- 教科版科学五年级下册全册全套课件【最新版】
- 中绿的制度课
评论
0/150
提交评论