Java教程

上传人:da****ge 文档编号:242865640 上传时间:2024-09-10 格式:PPT 页数:125 大小:436KB
返回 下载 相关 举报
Java教程_第1页
第1页 / 共125页
Java教程_第2页
第2页 / 共125页
Java教程_第3页
第3页 / 共125页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,JAVA教案,1,1.1,程序设计方法的发展,1.2,面向对象程序设计基本概念,1.3,面向对象的基本特征,第一章 面向对象程序设计概述,2,第一章 面向对象程序设计概述,1.1,程序设计方法的发展,程序设计,:,就是针对某一要解决的问题,按照特定的程序设计方法设计出解决该问题的计算机指令序列。,程序设计方法经历了面向机器、面向过程和面向对象的发展历程。,面向机器的程序设计方法,:,使用针对特定机器型号的低级语言开发程序,不利于程序的编写和维护,程序的生产效率很低,质量难以保证,可移植性差。,面向过程程序设计方法,:,问题被看做一系列需要完成的任务,相应的函数用于完成这些任务,这些函数是面向过程的,及函数关注如何根据规定的条件完成指定的任务。,结构化程序设计方法,:,采用自顶向下,逐步求精的方法,将整个程序划分成若干相对对立的模块,模块之间的联系尽可能简单,每个模块只有一个入口和一个出口。由于这种分离导致数据可能被多个模块使用和修改,难于保证数据的安全性和一致性。,面向对象程序设计方法,:,以类作为构造程序的基本单位,具有封装,数据抽象,继承,多态等特点。,面向对象程序设计方法,:,以类作为构造程序的基本单位,具有封装,数据抽象,继承,多态等特点。,3,第一章 面向对象程序设计概述,1.2,面向程序设计基本概念,a.,对象是系统中用来描述客观事物的一个实体,b.,类是具有相同属性和操作的一组对象的集合,它为属于该类的所有对象提 供了统一的抽象描述,其内部包括属性和方法两个主要部分。,c.,属性:用来描述相同对象的静态特征,方法:用来描述相同对象的动态特征,4,第一章 面向对象程序设计概述,1.3,面向对象的基本特征,a.,抽象性:,通过对现实世界的事物进行抽象来定义类和对象,b.,封装性:,通过封装将对象的数据和方法绑定,并实现数据和方法的隐藏,c.,继承性:,通过继承能体现类与类之间的关系,实现代码的重用,d.,多态性的目的是为了提高程序的抽象度,封闭性和简洁性,统一一个或多个相关类对外的接口。,5,第二章,java,语言概述,2.1,Java,语言的产生及特点,java,技术的架构包括以下三个方面:,J2EE,企业版 是以企业为环境而开发应用程序的解决方案,J2SE,标准版 是桌面开发和低端商务应用的解决方案,J2ME,小型版 是致力于消费产品和嵌入式设备的最佳解决方案,6,第二章,java,语言概述,2.2 Java,开发工具与环境,2.2.1. Java,开发工具,sun j2sdk,和,Java workshop,borland,JBuilder,IBM Eclipse,Microsoft VJ+,Sybase Power J,等,Sun,公司的,J2SDK,反映了,Java,的最新进展,是其他各种开发工具的基础,7,第二章,java,语言概述,2.2 Java,开发工具与环境,2.2.2.,安装,Java 2SDK,下载地址:, Java,开发工具与环境,2.2.3.,设置系统环境变量,方法一:,1,. “,我的电脑”右键,-“,属性”,-“,高级”,-“,环境变量按钮”在 “系统变量”中“新建”,“,JAVA_HOME”,变量,=,jdk,的安装路径 例如 “,D:j2sdk1.4.2_04”,2.,再在 “系统变量” 中“新建”,“,CLASSPATH”,变量,=,jdk,路径下的,lib,路径下的,tools.jar,;,jdk,路径下的,lib,路径下的,dt.jar,如,:,.;,D:Jdk_javajdk1.6.0_10libdt.jar ; D:Jdk_javajdk1.6.0_10libtools.jar,3,.,找到“,path”,变量,在 “,path”,变量的值后面加上,jdk,路径下的,bin,路径,如,:,D:Jdk_javajdk1.6.0_10bin,注意:一旦,jdk,的路径发生更改,则另外两个环境变量也需要被更改,9,第二章,java,语言概述,2.2 Java,开发工具与环境,2.2.3.,设置系统环境变量,方法二:,1.,“,JAVA_HOME”,变量,=,jdk,的安装路径 例如“,D:j2sdk1.4.2_04”,2.,“,CLASSPATH”,变量,=%JAVA_HOME%lib,tools.jar,;,%JAVA_HOME%,lib,dt.jar,;,3.,“,path”,变量,= =%JAVA_HOME%bin,;,注意:,即使,jdk,的路径发生更改,其他两个变量也不需要在更,改,上面设置的每一路径中间必须以“;”作为分隔,10,第二章,java,语言概述,2.2 Java,开发工具与环境,2.2.4.,测试系统环境,在,jdk,环境下开发,java,应用程序的步骤,1.,编写,java,源程序 创建,.java,的文件,2.javac,编译源文件,生成,.class,的文件,注意:文件名必须与程序中的类名一致,3.java,运行源文件,11,第二章,java,语言概述,2.2 Java,开发工具与环境,一个简单的,java,应用程序的基本格式有以下几点规定:,1.,一个,java,应用程序可以有多个类,但最多只能有一个,public,类。如果有一个类是,public,的类,则源文件的名字必须与这个类的类名完全相同。,2.,文件扩展名,.java,。,3.,对于一个应用程序,必须有一个,main( ),方法,该方法标志着执行应用程序的起点。,4.,每个类都可以有多个方法,任何方法中可以有多条语句,每条语句都要以“;”结束。,5.java,语言是区分大小写的。,12,第三章,java,语言基础,3.1 Java,语言的基本组成,3.2,基本数据类型,3.3,变量和常量,3.4,运算符、表达式,3.5,流程控制语句,3.5,数组,3.6,函数与函数的重载,13,第三章,java,语言基础,第三章,java,语言基础,3.1 Java,语言的基本组成,java,语言的体系结构如下:,字符,标示符、关键字和分隔符等,表达式,语句,类,程序,3.1.1 java,的字符集,java,语言使用,Unicode,国际标准字符集,通常的,ASCII,码用,8,位二进制码来表示一个字符,但是,Unicode,用,16,表示一个字符。,14,第三章,java,语言基础,第三章,java,语言基础,3.1 Java,语言的基本组成,3.1.2,标识符,用来表示 类名、方法名、变量名、常量名、数组名等的有效字符序列被称为标识符。,标示符的组成:只能由字母、数字、下划线,_,、美元符号,$,组成,第一个字符不能是数字,不能使用关键字作为标识符,注意,:,java,约定,变量名一般以小写字母开头,若一个变量名由多个单词构成,第一个单词后的单词以大写字母开始,例如,studentName,常量名一般以大写字母表示,类名一般每个单词的第一个字母大写, 如,HomeButton,15,第三章,java,语言基础,第三章,java,语言基础,3.1 Java,语言的基本组成,3.1.3.,关键字,关键字是,java,语言本身使用的标识符,它们都具有特殊的含义,java,中常用的,47,个关键字,abstract,、,boolean,、,break,、,byte,、,case,、,catch,、,char,、,class,continue,、,default,、,do,、,double,、,else,、,extends,、,false,final,、,finally,、,float,、,for,、,if,、,implements,import,、,instanceof,、,int,、,interface,、,long,、,native,、,new,null,、,package,、,private,、,protected,、,public,、,return short,、,static,、,super,、,switch,、,synchronized,this,、,throw,、,throws,、,transient,、,true,、,try,void,、,while,16,第三章,java,语言基础,第三章,java,语言基础,3.1 Java,语言的基本组成,3.1.4.,分隔符,注释,/,单行注释,/*,多行注释*,/,/*,文件注释*,/,普通分隔符,()用于在方法定义和访问中将参数括起来,或在,表达式中定义运算的先后次序,或在语句中将表达式和类型转,换括起来, ,用于生命数组的类型及应用数据的元素值, ,将若干语句序列括起来作为一个代码块 或为数,组初始化时赋值,17,第三章,java,语言基础,第三章,java,语言基础,3.2,数据类型,整数类型(,byte,,,short,,,int,,,long,),数值型 浮点类型 (,float,,,double,),基本数据类型 字符型 (,char,),布尔型 (,boolean,),类 (,class,),引用数据类型 数组(,array,),接口(,interface,),18,第三章,java,语言基础,第三章,java,语言基础,3.2,基本数据类型,3.2.1,整型,java,整型常量有三种进制的表现形式,a.,十进制整数 由,09,组成且第一个数字不能为,0,b.,八进制整数 由数字,0,开头并且有数字,0-7,组成,c.,十六进制整数 由数字,0,和字母,x,开头,并且由数字,0-9,,字母,a-f,或,A-F,组成,例如:,0x123,表示十六进制的,123,,等于十进制的,291,19,第三章,java,语言基础,第三章,java,语言基础,3.2,基本数据类型,3.2.1,整型,java,整型变量因为所占字节的不同,又可分成四种:,字节型,byte 8,位 取值范围,-128127,短整型,short 16,位 取值范围,-3276832767,整型,int,32,位,长整型,long 64,位,20,第三章,java,语言基础,第三章,java,语言基础,3.2,基本数据类型,3.2.2,字符型,字符型常量是用单引号括起来的,Unicode,字符集中的任何一个字符。如,a,A,转义字符,n,换行,将光标移至下一行的开始,t,水平制表,将光标移至下一个制表符的位置,r,回车,将光标移至当前行的开始,不移到下一行,反斜杠,输出一个反斜杠,单引号,输出一个单引号,”,双引号,输出一个双引号,21,第三章,java,语言基础,第三章,java,语言基础,3.2,基本数据类型,3.2.3,布尔类型,在,java,中,逻辑类型只有真(,true,)和假(,false,)两个值。,所有关系运算的返回值都是逻辑类型的值。,3.2.4,基本数据类型转换,类型按精度从低到高排列如下:,byte short char,Int,long float double,所有,byte short char,型都将被提成到,int,型,自动类型转换:当把级别低的数据或变量变成级别高的变量时,系统自动完成数据类型的转换。,强制类型转换:当把级别高的数据或变量变成级别低的变量时,必须强制类型转换。,(目标类型)要转换的值;,22,第三章,java,语言基础,3.3,运算符、表达式,运算符按功能划分,主要有下面几类,:,算术运算符,关系运算符,布尔逻辑运算符,赋值运算符,条件运算符等,23,第三章,java,语言基础,3.3,运算符、表达式,3.3.1,算术运算符和算术表达式,运算符 含义 范例 结果,+,正,+3 3,-,负,b=4,;,-b,;,-4,+,加,5+5 10,-,减,6-4 2,*,乘,2*3 6,/,除,5/5 1,%,取模,5%5 0,+,自增(前),a=2;b=+a; a=3;b=3,+,自增(后),a=2;b=a+; a=2;b=3,- -,自减(前),a=2;b= - - a; a=1;b=1,- -,自减(后),a=2;b=a - -; a=1;b=2,+,字符串相加 “,he”+“llo,” hello,24,第三章,java,语言基础,3.3,运算符、表达式,3.3.2,关系(比较)运算符和关系表达式,运算符 运算 范例 结果,=,相等于,4=3 false,!=,不等于,4!=3 true,小于,4,大于,43 true,=,小于等于,4=,大于等于,4=3 true,instanceof,检查是否是类的对象 “,hello”instanceof,String true,25,第三章,java,语言基础,3.3,运算符、表达式,3.3.3,逻辑运算符和逻辑表达式,运算符 运算 范例 结果,& and(,与,) f & t f,| or(,或,) f | t t,xor,(,异或,) f t t,!,N,ot(,非,) !,T,f,& and(,短路,) f & t f,| or(,短路,) f | t t,26,第三章,java,语言基础,3.3,运算符、表达式,3.3.4,赋值运算符和赋值表达式,运算符 运算 范例 结果,=,赋值,a=3 a=3,+=,加等于,a=3;b=2;a+=b; a=5;b=2,-=,减等于,a=3;b=2;a-=b; a=1;b=2,*=,乘等于,a=3;b=2;a*=b; a=6;b=2,/=,除等于,a=3;b=2;a/=b; a=1;b=2,%=,模等于,a=3;b=2;a%=b; a=1;b=2,注意:,1.,赋值表达式的左侧必须是一个变量,不能是常量或者表达式,如,1+a=b,2.,对于连续赋值的表达式,赋值运算讲从右向左依次执行,如,x=y=z=1,,先求,z,的值,将,z,的值赋值给,y,3.,应用复合赋值运算符时,变量要与赋值运算符右边的整个表达式进行运算,而不是表达式的一部分,如,x/=y+1,相当于,x=x/(y+1),而不是,x=x/y+1,27,第三章,java,语言基础,3.3,运算符、表达式,3.3.5,条件运算符,条件运算符“ ? : ”是,java,中唯一的一个三元运算符,要求有三个操作数,条件表达式的一般形式:,表达式,1,? 表达式,2,:表达式,3,(,表达式,1,是关系表达式或逻辑表达式,结果若为真,则运算结果等于表达式,2,的值,否则运算结果等于表达式,3,的值,),例如:,min=a,b?a:b,;/,变量,min,去,a,,,b,中小者,28,第三章,java,语言基础,3.3,运算符、表达式,3.3.6,运算符的优先级,表达式的运算按照运算符的优先顺序从高到低进行运算,高 低,括号,-,算术运算符,-,比较运算符,-,逻辑运算符,-,赋值运算符,同级运算符的优先级,算术运算符,+ - * / % + -,逻辑运算符,& | & |,29,第三章,java,语言基础,3.4,变量和常量,变量的概念,在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据,系统分配的内存单元要使用一个标识符来标识,这种内存单元的数据是可以更改的,所以叫变量,定义变量的标示符叫变量名,内存单元中所装载的数据就是变量值。,用一个变量定义一块内存以后,程序就可以用变量名代表这块内存中的数据。,如,int,x=0, y ;,y=x+3 ;,注意:变量在使用时必须事先声明其类型,变量的有效取值范围,byte,b=129,;,/,编译报错,,因为,129,超出了,byte,类型的取值范围,30,第三章,java,语言基础,3.4,变量和常量,变量的作用域,在,c,,,c+,和,java,里,一对花括号中间的部分就是一个代码块,代码块决定其中定义的变量的作用域。,代码块由若干语句组成,必须用大括号括起来形成一个复合语句,多个复合语句可以嵌套在另外的一对大括号中形成更复杂的复合语句。,如,int,x=0,;,int,y=0,;,y=y+1,;,x=x+1,;,代码块决定了变量的作用域,作用域决定了变量的“可见性”和“存在时间”,31,第三章,java,语言基础,3.4,变量和常量,3.4.,局部变量,在一个函数或函数里面的代码块中定义的变量称为局部变量。,局部变量在函数或代码块被执行的时候创建,在函数或代码块结束的时候被销毁。,局部变量在进行操作前必须被初始化或进行过赋值操作,否则会出现编译错误。如,int,x,;,x=x+1,;,System,.out.println(x,);,32,第三章,java,语言基础,3.5,流程控制语句,3.5.1,分支语句,-if,语句,基本格式一,If,(条件表达式),执行语句;,执行原理:如果,if,后面的条件表达式成立,结果为,true,,则执行,if,里的执行语句,如果条件不成立,则跳过,if,里面的语句,程序继续向下执行,33,第三章,java,语言基础,3.5,流程控制语句,3.5.1,分支语句,-if,语句,基本格式二,If,(条件表达式),执行语句,1,;,else,执行语句,2,;,执行原理:,如果,if,后面的条件表达式成立,结果为,true,,就执行,if,下面的执行语句,1,,反之,结果若为,false,,则执行,else,下面的执行语句,2.,34,第三章,java,语言基础,3.5,流程控制语句,3.5.1,分支语句,-if,语句,格式三,If,(条件表达式,1,),执行语句,1,;,else if(,条件表达式,2),执行语句,2,;,else,执行语句,n,;,*,格式三的,if,语句是将前两种,if,的基本格式进行搭配使用,只要我们在应用的过程中保证我们的程序逻辑正确,语法格式正确就可以。,35,第三章,java,语言基础,3.5,流程控制语句,3.5.1,分支语句,-switch,语句,switch (,变量或表达式,),case,取值,1:,执行语句,1,;,break,;,case,取值,2:,执行语句,2,;,break,;,case,取值,3:,执行语句,3,;,break,;,、,case,取值,n:,执行语句,n,;,break,;,default :,执行语句;,注意:,Switch,后面的控制语句(变量或表达式)的值应该是整型而不是布尔类型,控制表达式必须是可以转化为,byte,、,short,、,char,、或,int,类型的值的表达式,36,第三章,java,语言基础,3.5,流程控制语句,3.5.1,循环语句,-for,语句,基本格式,for,(,起点变量;循环条件;步长,),循环体;,通常适用于具有指定次数的循环,37,第三章,java,语言基础,3.5,流程控制语句,3.5.1,循环语句,-while,语句,while,(表达式),循环体 ;,注意 “先判断再执行”,while,后面的控制语句必须是布尔类型的值,表达式后不带结束语句的符号“;”,38,第三章,java,语言基础,3.5,流程控制语句,3.5.1,循环语句,- do while,语句,do,循环体;,while,(表达式);,注意 “先执行再判断”,表达式后的结束语句符号“;”必须写,39,第三章,java,语言基础,3.5,流程控制语句,3.5.1 break,与,continue,语句,break,语句可以中止循环体中的执行语句和,switch,语句,一个无标记的,break,语句会把控制传给当前循环的下一条语句,如果有标记,控制会被传递给当前方法中的带有这一标记的语句,适用于,while,,,do,,,for,,,switch,语句,continue,结束当前循环进入下一次循环,适用于,while,,,do,,,for,语句,40,第三章,java,语言基础,3.6,数组,3.6.1,一维数组,数组是多个相同类型数据的组合,实现对这些数据的统一管理,数组中的每一个数据也叫数组的一个元素。(数组是用来保存一系列值的一种特殊变量),在一个数组中只能用于存储一种数据类型的数据,一维数组的定义,类型 数组名, ,或者 类型, ,数组名,例如:,int,a ;,(,该操作只是声明了一个元素个数没有确定的数组,系统将,a,数组的初始化为空,null,,此时数组,a,并没有得到可用的内存空间,),一维数组的创建,数组名,= new,类型,长度, ;,a=new,int,10;/,创建了一个包含有,10,个整数元素的数组,a,声明数组的同时为数组分配空间,int,a = new,int, 10 ;,(,只有用,new,运算符为数组分配内存空间后,数组,a,才真正占用一片连续的存储单元,),41,第三章,java,语言基础,3.6,数组,数组的赋值,方式一 :在定义数组的同时就为数组元素分配空间并赋值,例如 :,int,a = 1,2,3,4,5,6;,或者,int,a = new,int, 1,2,3,4,5,6;,方式二:先定义数组并为数组分配空间,在采用动态方式为数组的每个元素逐一赋值,例如:,int,a = new,int, 6;,a0=1;,a1=2;,、,a5=6;,注意:在,java,语言中声明数组时,无论用何种方式定义数组,都不能指定其长度,例如,int,a 5;/,编译时会报错,42,第三章,java,语言基础,3.6,数组,一维数组元素的引用,一维数组的引用形式,:,数组名,下标,;,数组元素的下标是从,0,开始的,如果一个一维数组有,n,个元素,则该数,组中的第一个元素的下标是,0,;,最后一个元素的下标就是,n-1,数组元素的下标可以是非负的整型常量或者表达式。例如,a2*3=1;,java,会对数组的下标范围进行严格检查,如果下标超出范围将产生运行错误,java,数组作为一个整体,不能参加运算,只能对单个的元素进行处理。,例如,a 2+a3,java,为数组提供了,length,属性来返回数组的长度,即数组的元素个数。,43,第三章,java,语言基础,3.6,数组,3.6.2,二维数组,二维数组的定义,类型 数组名,行数, ,列数,类型,行数, ,列数,数组名,例如,:,int,aa, 2 3 ;,或者,int, 2 3 ,aa,;,二维数组的创建,数组名,= new,类型, ;,a a=new,int,2 3;,声明数组的同时为数组分配空间,int,aa, = new,int, 23;,44,第三章,java,语言基础,3.6,数组,二维数组的赋值,方式一 :在定义数组的同时就为数组元素分配空间并赋值,例如 :,int,aa, = 1,2,3,4,5,6;,或者,int,aa, = new,int, = 1,2,3,4,5,6;,方式二:先定义数组并为数组分配空间,在采用动态方式为数组的每个元素逐一赋值,例如:,int,a = new,int,23;,a00=1;,a01=2;,a02=3;,a10=4;,a11=5;,a12=6;,45,第三章,java,语言基础,3.6,数组,二维数组元素的引用,二维数组的引用形式,:,数组名,行下标,列下标,;,二维数组从逻辑上来看像一个矩阵,数组元素中的第一个下标值表,示该元素在矩阵中的行号,第二个下标表示列号,下标都是从,0,开始,在二维数组中使用,length,属性返回数组长度会因为形式不同而含义不同,aa.length,返回的是二维数组的行数,aa0.length,返回的是二维数组的列数,46,第三章,java,语言基础,3.6,函数与函数的重载,3.6.1,函数的基本语法格式,返回值类型 函数名 (形参类型 形式参数,1,,形参类型 形式参数,2,,、),函数体;,return,返回值;(可选),形式参数:在方法被调用的时候用于接收外部传入的 数据的变量,形参类型:该形式参数能接受的数据类型,返回值:方法在执行完毕后返还给调用它的程序的数据,返回值类型:函数要返回的结果数据的数据类型,注意:,实参:调用函数时实际传给函数形式参数的数据,形参的个数可以是,0,个和任意多个 ,当形参个数为,0,时 参数列表的括号是不可以省略的,47,第三章,java,语言基础,3.6,函数与函数的重载,3.6.2,函数的调用,调用方式一:,如果函数没有返回值或调用程序不关心函数的返回值,可以用下面的格式调用,如 函数名(实参,1,,实参,2,、),调用方式二:,如果调用程序需要函数的返回结果,则要用下面的调用方式,如,int,area=,getArea,(,10,,,20,);,调用方式三:,对于有返回值的函数调用,也可以在程序中直接使用返回结果,如,System.out.println,(“,第二个长方形的面积是:”,+getArea(10,20);,注意:,函数只有在调用的时候才能实现它的功能,函数在调用的时候 形参和实参的类型和个数必须一一对应,48,第三章,java,语言基础,3.6,函数与函数的重载,3.6.2,函数的重载,函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。,49,第四章,面向对象,-,类、对象和接口,4.1,类和对象的定义,面向对象的编程思想就是力图使对计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能一致,面向对象的特征:封装、继承和多态,类是对一类事物的描述,是抽象的,概念上的定义,对象是世界存在的该类事物的每个个体,因此也称为对象 或 实例,类是用来创建对象的模板,包含了被创建对象的状态描述(属性)和方法的定义,类是,java,程序最小的基本单位,,java,编译器无法处理比类更小的程序代码,50,第四章,面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.1,类的定义,J,ava,中类的定义包括两部分:类声明和类体,类的一般格式如下:,【,类修饰符,】 class,类名,/,类声明, /,类体,属性声明部分;,/,成员变量的声明部分,构造器声明部分;,方法声明部分;,/,成员方法的声明部分,类修饰符是一组限定类是否可以被其他类访问的修饰符,成员变量用来描述属性,成员方法用来刻画行为或动作,每一个成员方法确定一个功能或操作,51,第四章,面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.1,类的定义,类的修饰符有,public final abstract,和缺省修饰符,1.public “,公共的,公有的”,当一个类被声明为,public,时,只要在其他包的程序中使用,import,语句引入这个,public,类,就可以访问和引用这个类,注意:程序中有多个类时。最多只能有一个,public,的类,程序名必须命名为,public,的类名,2.final “,最终的”,用,final,修饰的类叫最终类,最终类是不能被任何其他类所继承的,3.abstract “,抽象的”,用,abstract,修饰的类叫抽象类,4.,缺省的修饰符,当类没有任何修饰符时,它只可以被同一个包内的其他类使用,52,第四章,面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.1,类的定义,类定义的基本形式:,类修饰符, class,类名,变量类型,1,变量,1,;,、,变量类型,n,变量,n,;,方法类型,1,方法,1,(参数列表),/,方法体;,、,方法类型,n,方法,n,(参数列表),/,方法体;,53,第四章,面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.2,成员变量,成员变量的声明格式:,【,修饰符,】,变量类型 变量名(列表),当同时声明多个成员变量时,彼此之间用逗号分隔,修饰符是可选的,它是指访问权限修饰符,public,,,private,,,protected,和非,访问权限控制符,static,,,final,非访问控制符,static “,静态的” 和,final “,最终的”,1.,用,static,修饰的成员变量是类成员变量,static,int,age,没有用,static,修饰的成员变量是实例成员变量,int,age,类成员变量不属于类中的任何对象,54,第四章,面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.2,成员变量,类成员变量的特点:,a.,静态成员变量存储在类的内存区成员变量中,是属于整个类的,一个类的任何对象访问它时,存取的都是相同的数值,b.,可以通过类名分量运算符访问它,c,.static,类成员变量仍属于类的作用域,还可以使用,public static,,,private static,等进行修饰,修饰符不同,可访问的层次就不同。,2.final,修饰符,用,final,修饰的变量,一旦赋值,就不能改变。也称,final,修饰的变量为常量。,55,第四章 面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.2,成员变量,成员变量的访问控制符共有,4,个,:,public,private,protected,缺省的控制符,1.public,当用,public,修饰成员变量时,它可以被任何程序直接访问和修改 这样容易引起数据不一致,造成安全性下降,2.private “,私有的 ”,私有成员变量只能被定义他们的类访问和调用,其他任何类都不能获取私有成员变量,3.protected “,受保护的 ”,这种变量只能被三种类访问,a.,成员变量所在的类,b.,同一个包内的其他类,c.,其他包中的该类的子类,4.,缺省的控制符,这种变量可以被所在的类和所在的类同一个包内的其他类访问,56,第四章 面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.2,成员变量,-,信息的封装和隐藏,使用者如果对类内部的数据(对象的成员变量)直接操作,将容易导致数据的错误、混乱和安全性问题,J,ava,中通过将数据封装,声明为私有的(,private,),再提供一个或多个公共的(,public,)方法来实现对该成员变量的操作,以实现下述目的:,1.,隐藏一个类的实现细节。,2.,使用者只能通过事先定制好的方法来访问数据,可是方便的加入控制逻辑,限制对属性的不合理操作。,3.,便于修改,增强代码的可维护性。,57,第四章 面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.3,成员方法,成员方法一旦被定义,便可以在不同的程序段中多次调用,故可增强程序结构的清晰度,提高编程效率。,成员方法的定义 :,【,修饰符,】,返回值类型 方法名(,【,参数列表,】,),/,方法体,局部变量的声明部分;,执行语句部分;,成员方法的访问控制符共有四个:,public,,,private,,,protected,和缺省修饰符,,java,用它们限定成员方法是否可以被其他类访问,和成员变量的访问控制符所起的作用是一样的,58,第四章 面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.3,成员方法,static abstract final,修饰符,修饰的方法,1.static,修饰的方法被称为是静态方法,它是属于整个类的类方法,不用,static,修饰的方法是属于某个具体对象的方法,静态方法的特征:,(,1,)类方法在内存中的代码段将随着类的定义而分配和装载,非静态方法只有在对象被创建时,才为该对象的方法分配内存空间,(,2,)类方法在调用时 不用创建对象 直接用类名,.,方法名的方式调用,非静态方法在调用时必须创建对象 采用对象名,.,方法名的方式调用,(,3,)静态方法只能处理静态变量,(,4,)静态方法只能调用静态方法,(,5,)静态方法不能被覆盖 也就是说这个类的子类不能有相同名,相同参数的方法,(,6,),main,方法是静态方法 在,Java,的每个应用程序中,都必须有一个,main,方法,他是主程序的入口,59,第四章 面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.3,成员方法,static,abstract,final,修饰符修饰的方法,2.abstract,修饰的方法叫抽象方法 这种方法只有方法声明 没有方法体,例如,public abstract double area,(,double x,,,doubley,),;,抽象方法的声明通常出现在抽象类和接口中,3.final,修饰的方法不能被子类中的相同方法覆盖,注意,1. abstract,修饰符 和,final,修饰符不能同时使用,2.,在进行方法定义时,,java,要求必须说明返回值的类型,如果方法没有返回值,那么需要在方法名前添加关键字,void,。,3.java,的方法也可以带参数,以便从外部向方法提供信息,编写方法时,需要确定参数的数量和类型,在方法定义中说明方法的所有参数名和参数的类型,4.,方法体中定义的变量称为局部变量,它只能被定义它的方法内部访问,而成员变量可以被类中的所有方法访问,与成员变量不同,局部变量使用前,必须进行初始化,60,第四章 面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.3,成员方法,- - - - - -,构造方法,构造方法,构造方法是一个特殊的方法,它的主要作用是在创建类的对象时,初始化类的实例,构造方法的特点,1.,构造方法的方法名必须和类名相同,2.,构造方法没有返回值,也不需要返回类型修饰符,3.,用户不能直接调用构造方法,4.,构造方法在用户创建对象时由系统自动调用执行,5.,构造方法的作用是对 类的对象进行初始化,在创建类的时候,如果不写构造方法,那么系统会给我们提供一个默认的构造方法,在创建类的时候,如果已经写出了构造方法,那么系统就不会提供默认的构造方法,61,第四章 面向对象,-,类、对象和接口,4.1,类和对象的定义,4.1.4,对象的声明和创建,声明对象,类名 对象名;,person,zxh,;,实例化,对象名,= new,构造方法,( ),;,zxh,=new person();,或者简写 类名 对象名,= new,构造方法,( );,person,zxh,=new person( );,使用对象,1.,成员变量的引用,对象名,.,成员变量名,zxh.name,=,赵星红,2.,成员方法的调用,对象名,.,方法名,(,参数列表,);,62,第四章 面向对象,-,类、对象和接口,4.2,类的继承,继承是实现软件可重用性的一种方式,可以增强软件的可扩充性,提高软件的可维护性。,被继承的类称为父类或超类 继承的类称为子类,后代类可以继承并获得祖先类的成员方法和成员变量,使祖先类的优良特性得以保存,如果更改祖先类的内容,这些更改将直接作用于后代类,后代类本身无需进行维护工作,同时后代类还可以增加自己的成员,从而不断的扩充功能,或者重写祖先类的方法以适应新的需要。,4.2.1,创建子类,在,Java,中,用,extends,实现继承类,【,修饰符,】 class,子类名,extends,父类名,类的变量的定义;,构造方法的定义;,方法的定义;,如果一个类没有使用,extends,显示的指明自己的父类,,Java,中默认的父类就是语言包,Java.lang,中的,object,类,63,第四章 面向对象,-,类、对象和接口,4.2,类的继承,4.2.2,成员变量的继承和隐藏,子类可以继承父类的所有非私有成员变量,包括实例成员变量和类成员变量(默认是指子类和父类在同一个包中 ),如果在子类中重新定义一个与父类中成员变量名称完全相同的成员变量,则子类拥有了两个相同名字的成员变量,一个是继承父类的,另一个是自己定义的,.,java,中规定,当执行从父类继承的方法时,所处理的是自父类继承的变量,当子类执行由自己定义的方法时,是自己定义的成员变量,即当子类引用这个同名的成员变量时,默认操作的是它自己定义的成员变量,而把父类那里继承来的成员变量“隐藏”起来。,当子类要引用继承自父类的同名成员变量时,要使用,super,关键字,64,第四章 面向对象,-,类、对象和接口,4.2,类的继承,4.2.3,成员方法的继承和覆盖,在类的继承过程中,子类可以继承父类的非私有成员方法,但是子类不能显示使用父类的构造方法,方法的覆盖是指在子类和父类中方法名相同,参数列表相同和返回值类型相同时,子类中的方法将会覆盖父类中的同名方法。,方法覆盖为子类提供了修改父类成员方法的能力,是,java,多态性的一种实现机制。,65,第四章 面向对象,-,类、对象和接口,4.2,类的继承,4.2.4 super,和,this,的使用,一个子类需要引用它的直接父类,可以用关键字,super,来实现,在子类和父类中出现同名的成员变量或成员方法时,我们用,super,来区分,super,的使用方法有三种,(1),用来直接引用父类的成员变量,super.,成员变量,(2),调用父类的构造器,super,(参数列表),注意 :,super,()必须是在子类构造器中的第一个执行语句,(3),用来直接调用父类中被覆盖的成员方法,super.,成员方法(参数类表),66,第四章 面向对象,-,类、对象和接口,4.2,类的继承,4.2.4 super,和,this,的使用,在一个类中出现同名的全局变量和局部变量时,我们用,this,来区分,this,的使用方法有三种,(,1,)用来访问当前对象的成员变量,this.,成员变量,(,2,)调用重载的构造方法,this. (,参数列表,),(,3,)用来访问当前对象的成员方法,this.,成员方法,(,参数列表,),67,第四章 面向对象,-,类、对象和接口,4.2,类的继承,4.2.4,抽象类和抽象方法,在面向对象程序设计中,越是处在继承结构最顶层的类,就越是概括的,越是抽象的,我们常常需要定义一些抽象概念的类,这些类为子类提供一个实现框架,本身却不能实现具体的实例,这称为抽象类。,抽象类的定义,abstract class a,、,68,4.2,类的继承,4.2.4,抽象类和抽象方法,抽象方法只有方法的声明,而用一个分号来代替方法体的定义,即没有具体操作,抽象方法的定义,abstract void,aa,();,用,abstract,修饰符修饰的方法称为抽象方法,抽象方法只有方法的声明,用一个分号来代替方法体的定义,即没有具体操作。,利用抽象方法,抽象类可以提供一个完整的变成界面,即在抽象类中提供子类中需要实现的方法的声明,而将方法的具体实现细节留给子类去实现。,第四章 面向对象,-,类、对象和接口,69,第四章 面向对象,-,类、对象和接口,4.2,类的继承,4.2.5,抽象类的作用,抽象类主要是通过继承,再由其子类发挥作用的,其作用包括两方面:,代码重用,规划作用,注意 :,1.,抽象类不能创建对象 创建对象的工作由抽象类派生的子类来实现,2.,抽象类中可以由,0,个或多个抽象方法,也可以包含非抽象的方法,3.,有抽象方法的类必须是抽象类,4.,抽象类可以派生子类,在抽象类派生的子类中必须实现抽象类中定义的多个抽象方法,5.,抽象类中可以声明,static,属性和方法,70,第四章 面向对象,-,类、对象和接口,4.3,类的多态,4.3.1 java,中的多态,多态即程序中同名的方法共存的情况,这样,一个方法可以有多个实现版本,程序运行时,系统会根据方法的参数或调用方法的对象自动选择一个方法执行,不会产生混乱和混淆。,J,ava,多态实现机制,J,ava,中提供两种多态实现机制:重载和覆盖,重载是在一个类中定义多个同名的方法,但方法拥有的参数的数量,类型和参数顺序不同,这样在方法调用时,通过参数列表来匹配相应的方法,实现需要的功能。,覆盖:类层次结构中,如果子类中的一个方法与父类中的方法有相同的方法名并具有相同数量和类型的参数,则新定义的方法将代替旧的方法,这称为子类中的方法覆盖了父类中的方法,父类中的方法被隐藏。,71,第四章 面向对象,-,类、对象和接口,4.4,内部类,在,Java,中,一个类可以包含另外一个类,被包含的类称为内部类,包含内部类的类称为外部类,class outer,int,b,class inner,int,a ;,b,7
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!