




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章
Java语言基础
1.1软件开发基础和Java语言概述
教学目的和要求
(1)
了解软件开发过程和程序设计语言
(2)了解Java的发展历史、特点,熟悉Java的开发工具和开发过程
(3)
掌握Application和Applet的特点一.软件开发基础
1.软件运行原理
(1)计算机:硬件、软件
硬件:中央处理器、输入输出系统、内存、外存等软件:操作系统应用系统:系统软件、应用软件
(2)计算机系统:冯.诺依曼式计算机系统,其核心思想:“存储+运行”
(3)计算机软件:程序、运行程序所需要的数据和文档
软件运行之前将其保存到内存中,然后CPU从内存中依次取出该软件程序的每一条指令顺序执行,在执行过程中,CPU可能需要内存中此软件的或其他软件的数据,调动输入、输出单元完成输入、输出操作,也可能调度其他的软件指令配合工作。二.操作系统与计算结构的发展
1.操作系统简介
(1)操作系统界于裸机和应用系统之间,对于计算机硬件有很强的依赖性,其次操作系统是面向应用系统的,它需要为应用系统提供方便有效的支持和服务,常见的有用户接口和功能调用(2)操作系统功能:设备管理、IO管理(输入输出管理)、文件管理、处理机管理、内存管理(3)OS分类:单机OS:Windows98,dos
网络OS:Windows2000,WindowsNT,UNIX2.计算结构的发展
(1)主机—终端模式:终端不具备运算能力,用户通过终端提交任务,由主机运算或处理完毕后,将结果传回终端特点:集中运算和集中管理(2)单机模式:
PC(个人计算机):所有程序、软件都保存并运行在PC机上(3)客户机/服务器模式(C/S模式):服务器负责集中处理和汇总运算,客户端为用户提供交互界面。(4)浏览器/N层服务器模式三.软件开发过程与程序设计语言1.软件开发过程
(I)了解应用软件的背景知识(II)分析和了解应用软件的功能和需求(III)确定应用软件的计算结构(IV)熟悉应用软件的工作运行环境(V)掌握开发应用软件的工具2.程序设计语言及其发展
(I)面向机器的语言:各种机器语言和汇编语言(II)面向过程的语言:BAISC、FORTRAN、Pascal、C(III)面向对象的语言
C++(功能强大,执行效率高)
Java(平台无关性,一次编写,到处运行)四.JAVA语言慨述
1.Java的发展历史
SUNMicrosystems公司开发的用于智能化家电的名为“橡树”(Oak)的语言1995年5月23日,Java被正式推出,它成功于internetSUN的开发工具为JDK,J++Builder,VisualJ++
语法规则和类库,掌面向对象的设计思想五.Java开发工具介绍
1.JDK
(1)免费的开发工具集(JavaDevelopersKits),是SUN公司提供下载地址/product/JDK/(2)JDK包括:
javac.exe:Java语言编辑器
java.exe:Java字节码解释器
Java类库2.集成开发环境VisualJ++
六.JAVA程序的开发过程与运行环境
1.开发过程:编写源程序、编译、运行
(1)编写源程序:UltraEdit、Edit、J++Builder、visualJ++
例1MyfirstProgram.javaimportjava.io.*;publicclassMyFirstJavaProgram{publicstaticvoidmain(Stringargs[]){
System.out.println(“ThisismyfirstJavaprogram!”);}}注意:
(I)Java是区分大小写的(II)在一个类的内部不能定义其他的类(III)一个程序中只能有一个主类(IV)保存时应以.java为后缀(2)编译生成字节码
高级语言分类:编译型:C、C++、FORTRAN
编译后直接生成可执行文件解释型:BASIC,Java
解释一句,运行一句,直至程序结束Java虚拟机:Java解释器
Java源程序经编译成功后生成字节码文件编译源文件命令:C>javacMyFirstProgram.java(I)源文件必须在当前目录下(II)编译器和源文件名中间须空格(III)编译成功后生成对应的.class文件
(3).运行
解释器软件java.exec>javaMyFirstJavaProgram
(I)载入(II)代码校验(III)解释执行七.Applet与Application
1.Application:
(1)JavaApplication程序是独立完整的程序(2)在命令行调用独立的解释器软件即可运行JavaApplication程序(3)JavaApplication程序的主类必须有一个定义为:
publicstaticvoidmain(Stringargs[])的main方法2.Applet
(1)编写Applet文件
importjava.applet.Applet;importjava.awt.Graphics;PublicclassMyFirstJavaAppletextendsApplet{publicvoidpaint(Graphicsg){g.drawString(“ThisismyfirstJavaApplet!”,15,20);}}(2)编译生成字节码文件:
C:>javacMyFirstJavaApplet.java(3)运行JavaApplet程序时,需要为它写一个HTML文件<html><head><title>MyFirstJavaApplet</title></head><body><hr><appletcode=MyFirstJavaAppletwidth=300height=200></applet></body></html>3.JavaApplet程序与JavaApplication程序的不同之处:
(1)JavaApplet程序是在WWW浏览器这个特定的环境下运行(2)运行JavaApplet程序的解释器不是独立的软件,而是WWW浏览器中软件的一部分。(3)JAVAApplet程序中不需要main方法,但需要继承Applet类(4)JavaApplet程序直接利用浏览器提供的图形用户界面,而JavaApplication程序需书写专用代码。(5)JavaApplet更适合于图形界面下的面向对象的编程模式。
八.Java特性
1.面向对象的高级语言2.适用于网络编程3.平台无关性,一次编写,到处运行4.分布式5.支持多线程6.简单易学7.安全稳定九.学习重点1.语法规则2.面向对象的设计思想3.Java类库教学目的和要求
(1).掌握Java程序的输入输出(2).掌握变量与数据类型(3).掌握表达式与运算符1.2Java程序的输入输出
Java程序的输入输出分:字符界面、图形界面图形用户界面GUI
1.JavaApplet在图形界面下的输入输出
图形界面就是程序与用户之间利用图形模式进行交互,图形模式下屏幕由若干行*若干列的微小像素点组成(例如800*600个像素点),每个像素点可以有16到256甚至更多种颜色.整个屏幕构成一副细腻多彩的图画,用户发给程序的命令可以通过图形界面下的一些特定元素(如菜单,按钮)实现.例1.4:AppletInOut.java
例2.3:AppletInOut.htmlApplet有WWW浏览器图形界面可直接使用2.JavaApplication在字符界面下的输入输出
字符界面,是指计算机程序与使用程序的用户之间通过字符模式的界面进行沟通,字符模式下一个屏幕被分成若干行*若干列个单位(例如40行*80列),每个单位可显示一个字符.例1.6CharInOut.java(1).print(),println()(2).c=(char)System.in.read();(3).try,catch关键字:异常处理
3.JavaApplication在图形界面下的输入输出
JavaApplication无浏览器可直接使用,需要我们自己为本Application程序创造一个图形界面,这种图形界面叫做帧(Frame),其类的定义在Java.awt包中.例1.7GraphicstInOut.java(1).importjava.awt.*;(2).用户自定义类ApplctFrame(3).图形界面的控制与字符界面的控制不同:字符界面程序的执行是单线索的,一个主程序就可以完全控制流程,而图形界面下用户可能在任何时刻操作窗口里任何一个部件,程序需要监视窗口里所有部件的情况,图形界面的窗口使用消息传递机制.(4).action(Evente,Objecto)(5).JavaApplication程序从主类的main()方法开始运行.1.3变量与数据类型1.3.1数据类型
数据类型:整数,浮点型,字符,布尔型见表1.1
1.布尔型:
boolean:占1个字节,取值:truefalse
缺省值:false
2.整数:短整型(short),整型(int),长整型(long),字节(Byte)
短整型:
short:占2个字节,取值:-2^8~2^8-1缺省值:0整型:
int:占2个字节,取值:-2^16~2^16-1缺省值:0长整型:long:占2个字节,取值:-2^16~2^16-1缺省值:0字节型:
Byte:占1个字节,取值:-128~127缺省值:03.字符:字符型字符型:
char占两个字节4.浮点数:浮点数,双精度型浮点型:float占四个字节缺省值:0.0F
字符型:double占8个字节缺省值:0.0D5.整型与字符型
(1).在使用整数变量时要注意其最大和最小取值范围(2).字符型变量的取值可以使用字符常量,也可以使用整型常数.如:charchar_initial_char=‘A’;charchar_initial_int=65;
不可将整数变量的数值直接赋值给一个字符型的变量
inti=65;
charchar_initial_int=i;
可改为:
charchar_initial_int=(char)i;
(1)定义:常数或变量从一种数据类型转换到另一种数据类型,称为类型转换(2)类型转换:隐含类型转换(或称缺省类型转换):把占用字节数较少的数据转换成占用字节数较多的数据.强制类型转换:把占用字节数较多的数据转换成占用字节数较少的数据.(3)赋值转换
inti=5;longj=i;longj=5;
错:inti=j;
强制类型转换:
longj=5;
inti=(int)j;
强制类型转换格式:(数据类型)变量名(4).运算过程中的类型转换例:intnum1=50;longnum2=2*num1;类型转换1.3.2常量
1.布尔常量truefalse2.整数常量十进制、八进制、十六进制一般整型常量长整型常量3.浮点常量一般浮点常量、双精度浮点常量4.字符常量表1.25.字符串常量1.3.3变量
1.定义变量:
一是定义这个变量的名字;二是定义这个变量的数据类型例:intx;charid;2.标识符命名:
(1).标识符可以由字母,数字,下划线或$符号组成,对标识符的长度没有限定(2).标识符必须以字母,下划线(_)或$符号开头.(3).标识符区分大小写.
char_class与CHAR_class不同3.定义变量时还可以同时给出这个变量的初始数值例:intx=10;charchar_class=‘r’;4.String在Java中作为对象5.程序中的变量必须先定义后使用,变量的有效范围在定义它的语句所在的大刮号内部.2.3表达式与运算符
1.4.1运算符1.算术运算:用于整型,浮点型数据双目运算符:+,-,*,/,%见表1.3单目运算符:++,--,-见表1.4例1.92.关系运算:关系运算的结果都是布尔型的数据,即“真”或者“假”==,!=,>,<,>=,<=表1.53.逻辑运算:是操作数和运算结果都是布尔型量的运算.表1.6逻辑运算符4.位运算表1.75.其他运算符(1).三目条件运算符:?:x?y:z(2).刮号与方刮号()优先级最高[]数组运算符(3).运算符
(4).对象运算符instanceof
用来测定一个对象是否属于某一个指定类或其子类的实例,若是返回TRUE,否则返回FALSE例:booleanb=MyManagerinstanceofEmployee;1.4.2运算符的优先级
表2.6算术运算>关系运算>逻辑运算
1.5—1.8教学目的
1.了解算法与结构化程序设计2.掌握分支、循环控制结构3.掌握定义和使用Java的方法引论
结构化程序设计是面向过程编程的重要内容,面向对象的编程也是以面向过程为基础发展而来的,面向对象编程最核心的思想之一就是“复用”,程序模块或片段可不经修改地反复应用在同一个应用软件甚至不同的应用软件中,从而提高开发效率并降低维护成本,复用的程序片段或程序模块的内部依然要严格遵循传统的结构化程序设计原则。1.5算法与结构化程序设计1.5.1Java程序结构
1.算法
主要作用是定义如何具体地完成某一任务,它把一段程序欲达到的目标分解成详细的、有顺序的步骤,然后用自然语言(又称为伪码)或图示(又称为算法流程图)表示出来。算法:(1)决定了程序的逻辑正确性(2)决定了程序的执行效率和代价
2.结构化程序设计
(1).设计思想:自顶向下、逐步细化(2).流程:是指程序运行时,其中各语句的执行顺序
(3).流程控制结构:顺序、分支、循环例1.12Example.java1.5.2Java语句
Java的类是由语句构成的。Java中语句以”;”结束,可分为简单语句和复合语句,所谓复合语句,实际上是将多条简单语句用花括号括起形成的。常见的语句有:1.赋值语句。如:k=5;k=a+b;//赋值表达式加分号构成赋值语句2.
变量声明语句。如:intk;floatf;3.
类声明语句。如:ClassANumberimplementsDealInt{......}4.方法声明语句。如:publicvoiddealInt(){......}
5.消息传送语句,即方法调用语句。一个对象的方法决定了可向该对象传递的消息。如:n1.dealInt();//调用方法
6.注释语句。//Example.java7.流程控制语句。1.6分支控制结构
分支控制结构又称为选择结构,在两种以上的多条执行路径中选择一条执行。
1.6.1if语句
(1).单层:if(条件表达式)
if分支的语句组
elseelse分支的语句组
例:if(grade>=60) System.out.println(“通过!”);else //else分支的复合语句 {System.out.println(“你的成绩是:”+grade); System.out.println(“不及格!”);}
(2)只有if分支,没有else分支
if(条件表达式)
if分支语句组;例如,判断某次测验的成绩是否通过,设及格分为60分。if(grade>=60) System.out.println(“通过!”);1.6.2嵌套的if语句
在if语句的分支中可嵌套使用if语句,如:if(布尔表达式) {if(布尔表达式)语句;}else{if(布尔表达式) 语句2;else 语句3;}
例:见教材28页1.6.3Switch开关语句
多分支的开关语句
Switch(表达式){
case判断值1:语句块1(break)case判断值2:语句块2(break)
….case判断值n:语句块n(break)default:语句块n+1}例:错
switch(MyGrade){ case‘A’:MyScore=5;case‘B’:MyScore=5;case‘C:MyScore=3;default:MyScore=0;}正确示例:
switch(MyGrade){case‘A’:MyScore=5;break;case‘B’:MyScore=5;break;case‘C:MyScore=3;break;default:MyScore=0;}switch(MyGrade){case‘A’:case‘B’:case‘C:MyScore=1;break;default:MyScore=0;}
1.6.4一个实例例1.13课本30页1.7循环控制结构
循环控制是在一定条件下,反复执行某段程序的流程结构,被反复执行的程序称为循环体。
Java中的循环语句:while,do-while,for
1.for语句确定循环格式:for(表达式1;表达式2;表达式3)循环体例1:
for(longresult=1;n>0;n--){result*=n;}
例2:for(inti=1,s=0;i<=100;i++,s=s+i);
2.while语句
格式:while(条件表达式)循环体Longresult=1;while(n>0){result*=n--;}
3.do-while语句
格式:do
循环体
while(条件表达式)
longresult=1;do{result*=n--;}while(n>0);
4.while,do-while语句的联系:都是不确定循环区别:
while语句先判断,后执行,可能一次都不执行
do-while语句是先执行,后判断,至少执行一次。
5.循环语句嵌套6.循环中的跳转语句循环中的跳转语句实现循环过程中的流程转移Java跳转语句:continue、break(1).break语句作用:使程序的流程从一个语句块内部跳转出来(i)带标号的break语句格式:break标号名;标号应标志着某一个语句块,执行break语句就从这个语句块中跳出,流程进入语句块后面的语句。例:stop://标志for循环的标号for(introw=1;row<=10;row++){for(intcolumn=1;column<=5;column++){if(row==5)breakstop;//跳出标号标记的循环}}(ii).不带标号的break语句:从switch分支或最高层的循环体中跳转出,执行分支或循环体后面的语句。例:for(i=1;i<100;i++)//外循环
for(j=2;j<i;j++)//内循环
if(i%j==0) break;//提前跳出内循环(2).continue语句(必须用于循环结构中)(i)不带标号的contnue语句:终止当前这一轮的循环,跳过本轮循环剩余的语句,直接进入当前循环的下一轮。例:for(i=1;i<100;i++){ if(i%3==0) continue;//结束本次循环,跳过下面语句
System.out.println(i);}
(ii)带标号的continue语句使程序的流程直接转入标号标明的循环层次。格式:contnue标号名;label1:外部循环{内部循环{continue;//1//...continuelabel1;//2//...}}例:First_loop:for(inti=1;I<100;i++){for(intj=2;j<i;j++){if(i%j==0)continueFirst_loop;}System.out.println(i);}(3)Return语句return语句的格式为:return表达式;return语句用来使程序流程从方法返回,表达式的值作为方法的返回值1.7.6例1.14课本34页1.8定义和使用Java的方法
Java的程序结构引入Java类库定义用户类1{定义类1的若干变量或对象;定义类1的方法1;..…定义类1的方法M;}
……..定义用户类N{定义类N的若干变量或对象;定义类N的方法1;..…定义类N的方法M;}1.定义方法
Java的方法:由方法头、方法体组成定义格式:[修饰符]返回值类型方法名(参数列表)
throws例外名1,例外名2….{方法体:局部变量声明;语句系列;}(1).方法头:方法名、参数列表、方法返回值类型、方法修饰符、方法抛出的例外。(2).方法体:局部变量声明、语句系列(3).定义方法:将一组语句组成的语句系列看作一个整体用一个方法名指代2.方法定义:
(1).明确方法的功能(2).定义方法的输入输出数据3.方法的形式参数
方法头中的参数列表规定了方法的输入数据,而方法的返回值是方法的输出数据。
booleaninPrime(intn)
方法使用:booleanf_i=isPrime(i);(1).形式参数和实际参数在类型和数量上要一致(输入数据:用形式参数)(2).一个方法可没有任何形式参数(也可不返回值).4.方法的返回值:
return表达式5.方法的使用:
Java定义的方法:程序调用方法:需要程序书写专门的调用命令来调用的方法系统调用方法:运行过程中系统调用的方法action()(1).程序调用方法:(i).大部分用户自己定义的方法都属于程序调用方法(ii).具有确定性(2).系统调用方法:(i).程序的运行过程中,系统会自动调用(ii).Java程序由若干类定义组成,每个类有一个直接父类例:publicMyAppletextendsApplet;(iii).一个类将无条件地继承其父类的所有非私有的方法作为自己的方法。(iv).重载方法:将从父类继承来的方法名称不变,进行改写,实现新的功能。(v).Java类库(系统软件)
6.小结方法是一段完成相对独立的明确功能的代码的集合。
作业:37页8,9题第2章Java面向对象编程基础
I、面向对象基础授课目的:(1).掌握面向对象的基本概念
(2).了解面向对象软件开发的基本过程(3).掌握抽象,封装,继承,多态等(4).了解面向对象程序设计方法的优点
教学重点:1.面向对象的基本概念2.抽象,封装,继承,多态
引论
面向对象的程序设计和问题力求符合人们日常自然的思维习惯,能够更好地适应当今软件开发在规模、复杂性、可靠性和质量、效率上的种种需求,降低、分解问题的难度和复杂性、提高整个求解过程的可控制性、可监测性和可维护性,从而以较小的代价和较高的效率获得较满意的效果。一、面向对象的基本概念1.对象、类与实体(1).面向过程的程序设计以具体的解题过程为研究和实现的主体;面向对象的程序设计以具体的解题问题中涉及到的各种对象为主要矛盾;(2).对象的概念是面向对象技术的核心所在,所有的面向对象的程序都是由对象来组成的,这些对象首先是自治的、自恰的,同时它们可以互相通信、协调、配合,共同完成整个程序的任务和功能。
(3).实体:现实世界真实存在的事物,这种事物具有一定的属性和行为例如:(i).一只名叫“小虎”的狗属性:灰色,动物,有四条腿,长毛行为:会跑,叫,咬人(ii).课桌(iii).计算机(iv).张三属性:性别:男性年龄:24电话号码为:睡觉上课(v).王二麻子属性:性别:女性年龄:21电话号码为:睡觉上课(4).对象:是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现,用属性、方法模拟实体的属性和方法。ZhangSan:属性:
Stringsex=maleIntold=24Stringtel=行为:
HaveClass()PlayBall()Sleep()WangEr:属性:
Stringsex=femaleIntold=21Stringtel=
行为:
HaveClass()Sleep()
(5).类:类是一种抽象的数据类型,它是所有具有一定共性的实体的共同特征和抽象学生:属性:年龄,性别,电话号码行为:上课,睡觉
classStudent{privateStringsex;privateStringtel;privateintold;privateBooleansleep();privateBooleanHaveClass();}2.对象的属性(1)对象具有三种属性:(i).状态:对象的静态属性,主要指对象内部所包含的各种信息,也就是变量(ii).行为:表达对象的动态属性,设置或改变对象的状态,一就是改变变量的值(iii).标志:每一个对象都有一个属于它自己的唯一标志,国际性组织CORBA为对象定义了专用的128比特的标志量,保证对象能够相互区分(可用程序中的对象名表示)(2)(i).对象的方法把对象的内部变量包裹、封装、保护起来,只有对象自己的方法才能操作这些内部变量(ii).对象的方法是对象与外部环境、其他对象交互、通信的接口,对象的环境和其他对象可通过这个接口调用对象的方法操作对象的行为和改变对象的状态。对象:现实情况计算机实现状态变量行为 对象方法标志 对象名对象是抽象数据结构类的实例化,先定义类,即定义同类对象公共的属性,包括变量和方法,再用对象名创建类的实例---对象二、面向对象软件开发的基本过程1.面向对象:面向对象的分析(OOA):ObjectOrientedAnalysis面向对象的设计(OOD):ObjectOrientedDesign面向对象的编程(OOP):ObjectOrientedProgram2.面向对象的软件开发过程:(1)应用软件开发的起点是用户的实际问题和需求(2)终点是可较好解决用户实际问题和满足用户原始需求的应用软件(3)开发过程需求分析 需求模型化概要设计详细设计 实现 测试 维护
3.面向对象分析阶段(1)需求分析(2)需求模型化:通过对需要解决的实际问题建立模型来抽象、描述对象实体,最后形成OOA模型,将用户的需求准确地表达出来。(i)对象—类层捕捉要开发的应用软件所对应的各个现实世界的实体,并从中抽象出类(ii)静态属性为对象—类层中抽取出来的各个类和对象设计静态属性(状态)和它们之间的约束关系(称为实例连接)静态属性是类或对象所包含的各种状态和信息实例连接体现了对象之间因特定的事物规则和限定条件而存在的约束关系。(iii)服务层服务层定义了对象和类的动态属性以及对象之间的消息通信.(iv)结构层结构层定义系统中所有对象和类之间的层次对象间有包含和继承两种结构关继承(一般---特殊)
包含(整体---部分)
老师老师教研室主任王老师学院院长李老师(v)主题层主题层将定义若干个主题,把有关的对象分别划归不同的主题,每个主题成为一个子系统4.对象的设计阶段
(1)概要设计:界面设计、任务管理、数据管理(2)详细设计:是对概要设计所得的模型做进一步的细化分析、设计和验证。细化设计包括确定静态数据属性,对类方法(即操作)的参数、返回值、功能和功能的实现的明确规定
5.实现阶段(1)选择一种合适的面向对象的编程语言(2)编码(3)集成(模块)(4)测试三、
面向对象程序设计方法的特点1.抽象(1)抽象是科学研究中经常使用的一种方法,即去除掉被研究对象中与主旨无关的次要部分,或是暂时不予考虑的一部分,而仅仅抽取出与研究工作有关的实质性的内容加以考察。(2)抽象分类:一、过程抽象二、数据抽象(3)过程抽象:将整个系统的功能划分成若干个部分,强调功能完成的过程和步骤数据抽象:把系统中需要处理的数据和这些数据上的操作结合在一起,根据功能、性质、作用等因素抽象成不同的抽象数据类型。
2.封装封装是指数据保护在抽象数据类型(类)的内部,系统的其他部分只能通过抽象数据类型的方法(类的方法)对此数据进行操作。PublicclassStudent{privateintold;publicintgetOld(){returnold;}publicSetOld(intSold){old=Sold;}}3.继承当一个类拥有另一个类的所有数据和操作时,就称为这两个类之间具有继承关系。被继承的类称为父类或超类,继承了父类或超类的所有属性的类称为子类。祖父人person
父亲教师teacher
儿子教研室主任ChairMan
4.多态:是指一个程序中同名的不同方法共存的情况多态的实现(1)子类对父类方法的覆盖publicclassEmployee{privaedoublesalary;AddSalary(){Salary=Salary+102);}
publicclassManagerextendsEmployee{AddSalary(intpercent){Salary=Salary*(1+percent/100)+102;}}(2)在同一个类中定义多个同名的不同方法
publicclassEmployee{privaedoublesalary;AddSalary(){Salary=Salary+102;}AddSalary(intpercent){Salary=Salary*(1+percent/100)+102;}}四、面向对象程序设计方法的优点
1.可重用性
2.可扩展性3.可管理性
2.1定义类教学目的与要求
1.熟练掌握类定义的语法结构,类的方法的声明和使用2.掌握创建类的修饰符、类头、类体的组成引论
Java程序都是由一个个类组成,编写Java程序的过程就是从现实问题中抽象出Java可实现的类并用合适的语句定义它们的过程,包括定义类内的各种属性和方法,创建类的对象,定义类间的关系和接口
一、定义类的过程就是定义类的属性和服务的过程:类的属性就是类的静态属性,指类内包含的各项数据,如变量或其他类的对象类的服务称为成员函数或方法定义类语法结构:[修饰符]class类名[extends父类][implements接口名]{类成员变量声明;类方法的声明;}类的定义:类头类体类头定义类的性质,类体定义类的具体内容
二、
声明类头用class标志着一个类定义的开始,class后面是新定义类的类名classDepartment{intm_DeptNo;//定义类属性m_DeptNo,代表部门编号}
classEmployee{intm_EmpNo;//定义类属性m_EmpNo,代表雇员编号
intm_DeptNo;//定义类属性m_DeptNo,代表雇员所在的部门编号}1.父类名新定义类名extends父类名父类:Java类库中的定义的类,自定义的类例:classEmployee{intm_EmpNo;intm_DeptNo;}classCommonEmployeeextendsEmployee{intm_ManagerNo;}classManagerEmployeeextendsEmployee{intm_SecretaryNo;}继承可减少代码量,提高开发效率、质量和标准化程度
2.
接口名implements接口名说明类中实现了哪个接口定义的功能和方法接口是实现多重继承的一种机制3.修饰符访问控制符、抽象类说明符、最终类说明(1)抽象类说明符abstract说明一个类是抽象类(2)最终类说明符final说明一个类是最终类(3)public是公共访问控制符,程序中的主类必须是公共类例:
publicclassMyJavaApplication{publicstaticvoidmain(Stringargs[]){System.out.println(“Themainclassofprogramisapublicclass”);}}三.声明类体1.成员变量(类的属性)类的属性可为简单变量,对象、数组等类属性声明为简单变量语法:[修饰符]变量类型变量名[=变量初值];声明类属性为对象语法:[修饰符]类名对象名[=new类名(实际参数列表)];例:
classDepartment{intm_DeptNo;Stringm_DeptName;Intm_DeptTotalEmp;ManagerEmployeem_DeptMgr;}A.类属性修饰符常用private,staticB.如果使用另一个类的对象为当前所定义类的属性,要保证另一个类在当前类是可见的C.在类内用到该类的某个属性时,可通过该属性的名称直接使用例:m_DeptNo++;D.使用其他类的属性时,需要加上对象的名称例:m_DeptMgr.m_EmpNo++;
2.成员方法(类的方法)类的方法:规定类属性上的操作,实现类的内部功能,也是类与外界进行交互的窗口语法:[修饰符]返回值类型方法名(参数列表)thows例外名1,例外名2,……..{方法体:局部变量声明;语句序列;}(1)方法的修饰符:包括访问控制符、静态修饰符static、抽象修饰符abstract、最终修饰符final、同步修饰符synchronous等(2)类中定义方法的作用:①操作类的属性②与其他类或对象进行数据交流、消息传递③类中调用自身的方法,可直接使用方法的名称;调用其他对象或类的方法,需用对象或类为前缀例:if(getDeptNo()==d.getDeptNo())3.类的构造方法类的构造函数是类体中的一个特殊的方法,该方法与类同名,且不声明返回值类型。构造函数的作用就是在类的对象声明后,为其分配存储单元,即创建实例。但构造函数在程序中不能直接调用,调用时前面一定要使用new操作符。如:publicclassclassA{publicclassA(inti){……}
……}classclassB{classACAIns;voidmethod1(){intk=2;CAIns=newclassA(k);}……}4.封装对象中的域(类的属性)只能被同一对象中的方法访问;对象中设计有对同一封装中的域进行存、取等处理的方法,外界通过对象的方法访问对象的域例:书42页5.消息传递面向对象程序的一个重要特征:事件驱动程序的运行
Java的事件驱动机制:事件:(1)能被Java预定义接口中定义的方法响应(2)能被Windows应用程序接口(API)中定义的方法响应的操作。工作方式:事件发生时,系统(Java或Windows)能自动发出一个与之对应的消息——携带参数调用接口中相应方法的指令。事件驱动的三要素:事件、接口和消息机制。2.2创建类的实例对象
一、创建对象1.对象的含义(1)对象是现实世界的实体在计算机逻辑中的映射(2)计算机逻辑中,对象是一组数据(也称域或属性)和操作(也称方法)的集合(3)对象的定义包括声明所属的类和用构造函数创建实例。(4)对象是类的实例(5)对象的生命阶段:创建、使用、清除
2.创建对象语句有三个组成部分:声明对象、实例化、初始化语法:类名对象名=new类名(实际参数表);声明对象由类名和对象名组成,实例化由new操作符实现,实例化就是为对象分配内存。创建对象将在内存中开辟一块空间,其中包括该对象的属性和方法。(1)定义并创建:例:DepartmentNewDept=newDepartment();(2)先定义后创建:
DepartmentMyDept1;MyDept1=newDepartment();
二、使用对象两种应用方式:
1.直接存取对象的域2.调用它的方法。
三、清除对象1.Java的内存管理机制:由Java虚拟机担当垃圾收集器的工作,垃圾收集器会自动完成清理任务。2.Java的内存管理机制工作原理
如果要明确地清除一个对象,只需把一个空值(null)赋给这个对象引用即可。
四、一个应用实例
2.1创建一个窗体对象和一个标签对象。
2.3构造函数
在创建对象时,给不同的对象灵活地赋值,并保证无空值出现,这个任务由构造函数完成。1.构造函数是类的一种特殊方法,其特殊性体现在:(1).构造函数的方法名与类名相同(2).构造函数没有返回类型(3).构造函数的主要作用是完成对类对象的初始化工作。(4).构造函数不能由编程人员显示地直接调用(5).在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化。例:Department类
Department(intdno,Stringdname,inttotal){m_DeptNo=dno;m_DeptName=newString(dname);m_DeptTotalEmp=total;}
DepartmentMyDept=newDepartment(10,”会计”,30);
2.构造函数的主要作用:满足面向对象程序设计中对象初始化的需要。
2.构造函数的第二个作用:对成员变量可以有更复杂的操作,如数据有效性检查。Department(intdno,Stringdname,inttotal){if(dno<=0)System.exit(0);m_DeptNo=dno;m_DeptName=newString(dname);m_DeptTotalEmp=total;}3.Java中在声明类时,可以不定义构造函数,系统自动为该类生成一个默认的构造函数。4.声明和创建分开,声明定义类的属性,构造函数可灵活地为新变量赋值。例:见书本2.4访问控制修饰符
访问控制符是一组起到限定类、属性或方法被程序里的其他部分访问和调用的修饰符,它规定了程序的哪些其他部分可以访问和调用它们,哪些不可以。1.类的访问控制符只有一个public属性和方法以及他所属的类的访问控制符有:
public、protected、protected、privateprotected2.公共访问控制符public(1)pubic即公共的,一个类被声明为公共类,表明可以被所有的其他类所访问和使用,但并不表明类内的所有属性和方法可被其它类所访问。(2)类中设定为方法是类对外的接口部分,程序的其他部分通过调用它们与当前类交换信息、传递消息甚至影响当前类。(3)public修饰符会造成安全性和数据封装性下降,应减少Public属性的使用。3.缺省访问控制符假如一个类无访问控制符,就具有缺省的访问控制特性(包访问性)。包访问性:规定该类或类内的属性和方法只能被同一个包中的其他类所访问和调用。4.私有访问控制符private用private修饰的属性或方法只能被该类自身所访问和修改,而不能被任何其他类,包括该类的子类访问。5.保护访问控制符protected
用protected修饰的成员变量可被该类本身、同一个包内的其他类、该类的子类使用protected修饰符的主要作用是允许其他包中的它的子类来访问父类的特定属性。6.私有保护访问控制符privateprotected可被该类本身,该类的所有子类访问。例:AccessControl.java2.5静态属性、静态方法与静态初始化器
1.静态属性被static修饰的属性称为静态属性,其特点是:静态属性是类的属性,不属于任何一个类的具体对象例:publicclassEmployee{privateintm_EmpNo;Stringm_EmpName;Intm_MgrNo;Privatedoublem_EmpSalary;Staticdoublem_MinSalary;
StaticdoublegetMinSalary(){returnm_MinSalary;}}
EmployeeEmp1,Emp2;
引用或修改一个static限定的类属性时,可使用类名,也可使用某一对象名
Employee.m_MinSalaryEmp1.m_MinSalary
2.静态方法用static修饰符限定的方法,是属于整个类的方法
static方法:(1)调用方法时,应使用类名为前缀(2).非static的方法是属于某个对象的方法,对象的方法在内存中拥有自己专用的代码,static的方法是属于整个类的(3).static的方法只能处理static的数据。
StaticdoublegetMinSalary()1.静态初始化器静态初始化器是由关键字static引导的一对大括号括起的语句组,其作用是对静态属性的数据进行初始化。静态初始化器与构造函数的三点不同:(1)构造函数是对每个新创建的对象初始化,静态初始化器是对每个类进行初始化(2)构造函数是在用new运算符产生新对象时由系统自动执行,静态初始化器是在它所属的类加载入内存时由系统调用执行(3)静态初始化器不是方法,无方法名、返回值和参数列表
classEmployee{privateintm_EmpNo;Stringm_EmpName;Charm_EmpGender;Privatedoublem_EmpSalary;Staticintm_NextEmpNo;}
2.6抽象类与抽象方法
一、抽象类:1.
抽象类是没有具体实例对象的类,现实世界中找不到与其相对应的对象或实例例:人(抽象类)——>男人(类)——>男教师(类)
——>某某老师(对象)交通工具(抽象类)——>陆地交通工具(类)——>汽车(类)——>某某的宝马汽车
2.抽象类用abstract抽象修饰符修饰抽象类定义方法: abstractclasstransportmeans{floatspeed;voidstart(){
……..}voidstop(){
…….}}3.抽象类的作用:抽象类是所有子类的公共属性的集合,使用抽象类可以充分利用这些公共属性类来提高开发和维护程序的效率。
1.在抽象类的内部声明的一种仅有方法头,而没有具体的方法体和操作实现的方法。例:abstractBooleangoVocation(intdays);方法体的具体实现由当前类的不同子类在它们各自的类定义中完成2.所有的抽象方法都必须存在于抽象类中3.抽象类的不同子类对abstract方法有互不相同的实现方法。例:UseAbstract.javaDate类在java.util包中
GetYear()GetTime()2.7最终类、最终属性、最终方法与终结器
1.最终类被final修饰符所修饰和限定的类不可能有子类,称为最终类如用来实现网络功能的InetAddress、Socket类在类的继承树中,final类一定是最终类,而叶结点不一定是最终类2.最终属性被final修饰的类的成员变量,其取值在程序的整个执行过程中不会改变,为常量例:staticfinaldoublem_MinSalary=250;
用final修饰符说明常量:(1),需要说明常量的数据类型(2).需要同时指出常量的具体取值;(3)常量通常被声明为static3.最终方法(1)被final修饰符修饰的类方法,是功能和内部语句不能被更改的最终方法,不能被当前类的子类重载。例:
finaldoublegerMinSalary(){returnm_MimSalary;}(2)被private修饰符限定为私有的方法,以及所有包含在final类中的方法,都被缺省认为是final的。4.终结器回收对象时执行的方法例:
protectedvoidfimalize(){System.out.println(“AnObjectof”+toString()+”hasbeenfree&collected”);}
Java的垃圾回收机制:为一系统后台线程,与用户的程序共存,能检测用户程序中的各对象状态,当发现一个对象已不在被程序所利用时,就把它记录下来,这种不再被使用的对象被称为内存垃圾,当内存垃圾达到一定数目时,垃圾回收线程自动完成垃圾对象的内存释放工作。
2.8其他修饰符及修饰符的混合使用
1.synchronized修饰符主要用于多线程共存的程序中的协调和同步。2.抽象类不能被final修饰符所限定,即abstract和final不能共存。(1)
abstract不能与final并列修饰同一个类;(2)
abstract不能与private、static、final或native并列修饰同一个方法;(3)
abstract类中不能有private的成员(包括属性和方法);(4)
abstract方法必须在abstract类中;static方法中不能处理非static的属性。2.9继承与重载一、继承1.继承的定义:继承实际上是存在于面向对象程序的两个类之间的一种关系。当一个类拥有另一个类的所有数据和操作时,就称这两个类之间具有继承关系。被继承的类称为父类或超类,继承了父类或超类所有特性的类称为子类。2.一个父类可以同时拥有多个子类3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑工程劳务大清包合同
- 户外广告牌施工合同
- 影视制作公司与演员拍摄合同
- 乳胶漆工程施工合同
- 武汉纺织大学外经贸学院《西方舞蹈史与名作赏析》2023-2024学年第二学期期末试卷
- 西安科技大学高新学院《Vue应用开发》2023-2024学年第二学期期末试卷
- 烟台黄金职业学院《交通运输安全》2023-2024学年第二学期期末试卷
- 浙大宁波理工学院《汇编语言A》2023-2024学年第二学期期末试卷
- 鄂州职业大学《计算机辅助设计二维》2023-2024学年第二学期期末试卷
- 沪科版 信息技术 必修 3.2.2 信息作品的制作 教学设计
- DB32T 4353-2022 房屋建筑和市政基础设施工程档案资料管理规程
- 白描课件讲义整理
- 《三位数的加减法》单元分析
- 医学装备科医院设备绩效管理修订方案
- 绿色卡通风食堂食品安全培训PPT
- 新媒体营销完整版教学课件最全ppt整套教程电子讲义(最新)
- 人教版小学数学二年级上册口算天天练
- 建筑施工安全检查标准-JGJ59-2011完整版
- 八年级下册道德与法治第一单元教案(4篇)
- 练字常用的稿纸-红色单线稿纸-书写纸张打印即可
- 个人简历求职竞聘自我介绍PPT模板课件
评论
0/150
提交评论