收藏 分销(赏)

Java语言程序设计课件全套整本书电子讲义全书电子课件教学教程.ppt

上传人:精**** 文档编号:10251437 上传时间:2025-04-30 格式:PPT 页数:266 大小:5.96MB
下载 相关 举报
Java语言程序设计课件全套整本书电子讲义全书电子课件教学教程.ppt_第1页
第1页 / 共266页
Java语言程序设计课件全套整本书电子讲义全书电子课件教学教程.ppt_第2页
第2页 / 共266页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,单击此处编辑母版标题样式,第一级,第二级,*,1,21,世纪高等院校规划教材,Java,语言程序设计(第二版),JAVA,语言概述,第,1,章,3,目标,了解,Java,语言的发展历史,了解,Java,语言的特点,了解,Java,语言与,C+,语言的不同之处,掌握安装并设置,Java,开发平台,掌握,Java,程序的组成结构,掌握使用集成开发环境编写,Java,程序的方法,4,1.1.1,Java,语言的发展,1991,年由,James Gosling,负责开发的一个分布式代码系统(,Oak),,最初是为家用消费电子产品(电冰箱、电视机等)进行编程控制。,1993,年,Sun,公司将目标市场转向,Internet,。,1994,年将,Oak,语言更名为,Java。,1995,年,Java,被正式发布,之后立即引起极大的轰动。,5,Java,目前的主要应用,许多大公司购买了,Java,的许可证。,众多软件开发商开始支持,Java,软件产品。,面向对象的应用开发。,Intranet(,企业内部网)上的软件开发。,动态画面的设计,包括图形图像的调用。,与各类数据库连接查询的,SQL,语句实现。,其他应用类型的程序。,6,1.1.2,Java,语言的特点2-1,简单性,面向对象,分布式处理,健壮性,结构中立,安全性,系统精简,但功能齐备。,风格类似于,C+,,对,C+,程序员而言非常容易掌握。,Java,摒弃了,C+,中容易引发程序错误的地方,如指针操作和内存管理;,提供丰富的类库。,完全是面向对象的,它不支持类似,C,语言那样的面向过程的程序设计技术。,支持,TCP/IP,协议。,Java,应用程序可通过一个特定的,URL,来打开并访问对象,就像访问本地文件系统那样简单。,提供面向对象的异常处理机制,在编译时能对,Null,指针检测、数组边界检测、异常出口字节代码校验等。,自动垃圾收集来进行内存管理。,将源程序编译成一种结构中立的中间文件格式。只要有,Java,运行系统的机器都能执行这种中间代码。,Java,语言提供的安全。,编译器提供的安全。,字节码校验。,类装载。,7,1.1.2,Java,语言的特点2-2,可移植性,解释性,高性能,多线程,动态,Java,应用程序可以在配备了,Java,解释器和运行环境的任何计算机系统上运行,而与体系结构无关。,Java,编译器将,java,源文件生成类文件.,class,,类文件可通过,java,命令解释执行,将,Java,字节码转换为机器码。,JIT,编译器。可以提高,Java,代码的执行速度。,内置多线程功能,使得在一个程序里可同时执行多个小任务。带来的好处是更好的交互性和实时控制性。,允许程序动态地装入运行过程中所需要的类,这是,C+,语言进行面向对象程序设计所无法实现的。,8,1.1.3,Java,与,C+,的比较,项目,Java,C+,全局变量,不存在全局变量,存在,数据类型和转换,无结构、枚举或者联合,转换时进行类型相容检查,通过指针进行任意的类型转换,带来不安全性,范围运算符,无作用域范围运算符:,有,数组,对象,有只读的,length,无,length,内存管理,可创建不属于基本数据类型的对象,不能,提前声明,不必进行提前声明,必须,预处理,没有预处理机制,有,头文件,import,include,指针,无,有,goto,和,virtual,无,有,注释文档,对注释文档的内建支持,无,9,1.1.4,Java,程序工作机制4-1,10,1、,Java,虚拟机4-2,实现平台无关性的基础就是,Java,虚拟机,是以,Java,字节码为指令组的软,CPU。,负责对本地*.,class,文件解释执行。,包含类加载器、字节确认器、以及,JIT,实时编译器。,类加载器:,用来取得从网络或本地的类文件。,字节确认器:,确认类文件是否有正确的格式。,JIT:,使虚拟机能提高到编译式的运行效率。,11,2、,字节码4-3,*.,class,文件与机器码不同,不是真正的,CPU,可运行的指令代码,故又称伪代码。,通过,JVM,以及,JRE,将其转成本地机器代码,达到一次撰写,到处运行的效益。,(,Write Once,Run Anywhere),12,3、垃圾收集4-4,虚拟机使用两个独立的堆内存,分别用于,静态内存分配,和,动态内存分配,。,非垃圾收集堆内存,用于存储所有类定义、常量池和方法表。,另一个堆内存,用于垃圾收集的算法适用于存放在动态堆内存中的对象。,垃圾收集器在收集对象前调用,finalize,方法。,显式调用垃圾收集(,System.gc(),方法,不能保证立即运行,因为其优先级很低。,13,1.2.1,Java,应用程序举例2-1,/,这是文件名为“,HelloWorld.java”,的简单应用程序,import java.io.*;,/,引入包,class,HelloWorld /,定义类,public static void main,(String args),/main,方法,System.out.println(“,欢迎来到,Java,世界!”);,/输出数据,定义类的关键字,类名,必须这么写,14,保存并运行2-2,以,java,为扩展名,保存时注意类型。,15,1.2.2,Java,小应用程序举例2-1,/*,*HelloToJava.java,*/,import java.awt.Graphics;,import java.applet.*;,public,class HelloToJava,extends,Applet,public String sHello;,public void,init,(),sHello=,欢迎来到,Java,世界!;,public void,paint,(Graphics g),g.drawString(sHello,50,50);,文档注释,可以使用,javadoc,命令生成,HTML,帮助文件。,装入系统类库。,16,保存并运行2-2,将上页文件保存为,HelloToJava.java(,必须,)。,将文件保存为*.,htm,或*.,html,文件。,首先将,HelloToJava.java,文件进行编译(,javac,命令)。,javac HelloToJava.java,然后使用,appletviewer*.htm,查看效果。,17,1.2.3,Java,程序结构,(1)至多有一个,public,类,文件名必须与类名相同。,(2)程序可以有一个或多个其它类。,(3)当需要从某个类继承或使用某个类及其方法时,使用,import,引入该类的定义。,(4),Java,程序组成结构,package/0,个或,1,个,必须放在文件开始,import/0,个或多个,必须放在所有类定义之前,public classDefinition/0,个或,1,个,文件名必须与类名相同,classDefinition /0,个或多个,interface Definition /0,个或多个,18,1.3,开发工具与开发步骤,安装,Java 2 SDK,开发工具。,设置环境变量:,path,=javac,和,java,命令所在的目录。,classpath,=,存放字节码文件的目录。,Java2 SDK,简介及使用。,Java,程序的集成开发环境。,JCreator,的安装配置及使用。,19,总结:,了解,Java,程序设计语言的特性。,区分,Java,与,C+,两种语言的不同。,掌握,Java,程序包含,应用程序,和,小应用程序,两种不同类型。,熟练掌握每种,程序的基本结构,。,了解,J2SDK,和,JCreator,两种开发环境,及它们,开发,Java,程序的过程,。,JAVA,语言基础,第,2,章,回顾,了解,Java,语言的发展历史,了解,Java,语言的特点,了解,Java,语言与,C+,语言的不同之处,掌握安装并设置,Java,开发平台,掌握,Java,程序的组成结构,掌握使用集成开发环境编写,Java,程序的方法,21,目标,掌握标识符的定义规则,了解常用的保留字和分隔符,掌握各种简单数据类型的使用,掌握运算符和表达式的使用,掌握,Java,程序简单的输入输出方法,22,2.1.1,Java,标识符,23,用来表示变量、方法或类等的名字。定义的规则如下:,只能使用字母、数字、下划线和美元符。,只能以字母、下划线和美元符开头。,严格区分大小写,没有长度限制。,应该具有特定的意义。,合法标识符:,$,Programe,_java,,$,Programe_Java1,,Programe2_1,等。,非法标识符:,12,Programe,&_java,,$,Programe Java1,,%Programe21,等。,2.1.2 保留字,24,abstract,break,byte,boolean,catch,case,char,class,continue,default,do,double,else,extends,false,final,float,for,finally,if,import,implements,int,interface,Instanceof,long,length,native,new,null,package,private,protected,public,return,switch,synchronized,short,static,super,try,true,this,throw,throws,threadsafe,transient,void,volatile,while,2.1.3 分隔符(,Seprators),有:空格、圆括号、花括号、分号等。,每条语句无论一行还是多行都以分号结束。块(,Block),是包含在 里面的多条语句,块可以嵌套。空白插在代码的元素中间:由一个或多个空格组成,,,也可以由一个或多个,tab,空格组成多个空行,。,25,2.1.4,注释(,Comments),(,1,)单行,:,/,(,2,)多行,:,/*,*/,(,3,)文档注释,:,/*,*,*/,26,单行注释,以换行符为结束。,多行注释,注释内容较多。,使用,javadoc,工具从源代码和文档注释中将信息取出,然后转换为,HTML,文件。,2.2.1 数据类型划分,27,Java,数据类型,基本数据类型,字符型(,char),布尔类型(,boolean),复合数据类型,类(,class),接口(,interface),数组,空类型(,null),数值类型,整数类型,实数类型,短整型(,short),整型(,int),单精度浮点型(,float),双精度浮点型(,double),长整型(,long),字节型(,byte),2.2.2 常量和变量,1.常量有,字面(,Literal),常量,和,符号常量,两种。,符号常量定义的一般格式如下:,=;,例如:,final double PI=3.141593;,final int COUNT=1000;,2.,变量,定义的一般格式如下:,=,,=,,;,例如:,double x=1.2345;,28,其数值意义如同字面所表示的一样,。,用,Java,标识符表示的一个常量,。,用于标识数据的存储单元,各种类型的变量创建后都有默认值,。,2.3.1 整型数据2-1,1,整型常量,(1),整型多为十进制数形式,也可为八进制或十六进制形式,。,(2),Java,整型数都为带符号数。,(3),整型缺省为,int,型,若为长整型需在数据后加字母,l,或,L,。,29,2.3.1 整型数据2-2,2.整型变量,按照长度分为:,byte、short、int、long。,int,类型常用,基本满足需要,再大的整数,long。,byte,类型范围很小,-255到+255之间。,short,类型很少用,限制数据的存储为先高字节,后低字节,在某种及其中会出错。,例如:,byte b;short s;,int i;long l;,30,2.3.2 实型数据2-1,1.实型常量,(1),用十进制数形式表示,由数字和小数点组成,例如,3.25。,(2),用科学计数法形式表示,例如,123,E-3。,(3),数后加,f,或,F,为,float,,,加,d,或,D,为,double,,,没有后缀修饰的则缺省为,double,类型。,31,2.3.2 实型数据2-2,2.实型变量,实型变量按长度分为:,float,和,double。,双精度浮点型,double,比单精度浮点型,float,的精度更高,表示数据的范围更大。,例如,,float;,double d;,32,2.3.3 字符型数据2-1,字符常量是用单引号括起来的一个字符,如:,J,、,*,。,Java,中有以反斜杠(,)开头的字符,反斜杠将其后面的字符转变为另外的含义,称为转义字符。,33,2.3.3 字符型数据2-2,Java,中的字符型数据是16位的,Unicode,字符,汉字和英文字母占的内存空间相同。,“,JAVA,你好,”,共12个字节。,变量的定义如下:,char ch=,c,;,34,2.3.4 字符串数据,字符串常量是使用双引号括起来的字符序列,注意:最后字符不是,0,。,例如,:,Let,s learn Java!,。,字符串变量作为对象来处理,通过,String,和,StringBuffer,类的构造方法来定义。,String s=new String();,35,2.3.5,布尔型数据,布尔型常量值只有:,true,和,false,。,布尔型变量为,boolean,类型,去值为,true,和,false。,例如,,boolean b=true;,36,2.3.6 类型转换,自动类型转换:低优先级的数据自动会转换为高优先级的数据。,低 高,byte、short、char int long float double,强制类型转换:优先级高的数据转换为优先级低的数据。,例如,,double d=3.14159d;,int a=(int)d;,37,2.4.1 算术运算符,包括:+,-,*,/,%,+,-等。,前缀+:变量首先进行操作在自身进行加。,例如,,int a=2;int b=a+;,(,a=3,b=2,),后缀+:变量自身首先加然后再进行操作。,例如,,int a=2;int b=+a;,(,a=3,b=3,),38,2.4.2 关系运算符,完成操作数的比较运算,结果为布尔类型值。,包括:=,!=,=,,instanceof。,优先级低于算术运算符,执行顺序自作向右。,39,2.4.3 布尔逻辑运算符,40,包括:&,|,!,&,|。,注意区别简洁与&(或|)和非简洁与&(或|),例如,,int a=6,b=8,c=10,d=12;,boolean x=+ab+,&,如果其前面的表达式为假,则不再计算其后面的表达式,(a=,7,,b=,9,,c=,10,,d=,12,,x=,false,),boolean b=+ab+,(a=,7,,b=,9,,c=,10,,d=,12,,x=,false,),&,不管其前面的表达式为什么,都计算其后面表达式,2.4.4 位运算符,按位取反,,01010101=10101010。,按位与&,11111001&10001111=10001001。,按位或|,11111001|10001111=11111111。,按位异或,1111100110001111=01110110。,左移,,10,101011,101010,11,2=,11,101010。,无符号右移,101010,11,2=,00,101010。,41,2.4.5 赋值运算符,包括:=,+=,-=,*=,/=,%=。,例如,,int a=b=c=3;,42,2.4.6,条件运算符,为(?:)一般形式为:,表达式1?表达式2:表达式3;,例如,,double salary=(x intanceof teacher),?,2000,:,200;,2.4.7 运算符的优先级,如书,p35,表2-10所示。,43,2.5,表达式,由操作数和运算符按照一定的语法格式组成表达式。,例如,,(,a+b)*(c-d)。,44,2.6 简单的输入输出,输出:使用,System.out,对象进行输出。,Println():,输出文本并换行。,Print():,输出文本不换行。,输入:,1、使用,System.in,对象输入。,try-catch,与,read,或,readLine,方法。,throws IOException,与,read,或,readLine,方法。,2、使用命令行参数,main(),方法的,args。,45,输入输出示例,import java.io.*;,class inout,public static void main(String,args,)throws IOException,byte buf=new byte50;,double mul=1d;,int n=Integer.parseInt(,args0,);,for(int i=0;i0),System.out.println(intx+is +;);,else,if,(intx0),System.out.println(intx+is -;);,else,System.out.println(intx+is 0;);,3.1.2,switch,语句,53,switch(,表达式,),case,常量值,1:,语句,(,组,);,break;,case,常量值,2:,语句,(,组,);,break;,case,常量值,N:,语句,(,组,);,break;,default:,语句,(,组,);,表达式必须为,byte,short,int,或,char,类型,常量值必须是与表达式类型兼容,且不能重复,,break,跳出,case,语句段,若所有的,case,都不匹配,则可去执行,default,语句,3.2,循环结构,1、while,循环,while(,条件),语句组,;,2、do-while,循环,do,语句组,;,while(,条件,);,3、for,循环,for(,变量初始化;条件,;,递增或递减变量的值,),语句组;,54,注意:两者的区别,1先判断条件,成立才执行。2先执行在判断条件。,3.3 其他语句,label:,语句块,:用于给程序块取名字。,break:,语句在循环中用于立即从当前循环终止执行,结束当前循环的执行。,continue:,语句则是从其调用处跳至循环的开始处,结束本次循环,继续执行下一次循环,,continue,语句之后的语句将不再执行。,55,综合实例,public class BreakDemo,public static void main(String args),for(int i=1;i10),break;,System.out.println(i=+i);,System.out.println(,循环终止。);,56,3.4.1 方法的定义与调用2-1,1、方法定义格式如下:,修饰符,类型,方法名称,(参数行,),throws,异常名称,方法体,return,(,返,回值,),;,57,可为,private,、,public,、,protected,和,default,与,return,语句返回值类型相同。,符合标识符定义规则。,若方法的类型为,void,,则无,return,语句。,int min3(int x,int y,int z),int small;,/Math.min(x,y),返回,x,y,中较小数,small=Math.min(x,y);,small=Math.min(small,z);,return(small);,3.4.1 方法的定义与调用2-2,2、方法的调用,(1)创建方法所在类对象,使用此对象“.”操作符调用。方法有返回值,方法调用当作一个数值来处理,方法无返回值,可由对象直接调用。,s.study();,(2),使用修饰符,static,修饰的方法可以使用类名直接调用,若在同一个类中,可直接调用。,58,3.4.2 方法调用时的参数传递,1,方法的参数传递,2,传值调用与传引用调用,59,3.4.3 方法和变量的作用域,1,局部变量,指定义在语句块或方法内的变量。,2,实例变量和类变量,定义在类内、方法外的变量是实例变量或类变量,其中使用修饰符,static,修饰的变量是静态变量,也称为类变量。实例变量和类变量的作用域为类。,60,3.4.4 方法的嵌套和递归调用,1,嵌套调用,2,递归调用,61,3.4.5 方法的重载,方法重载,指同一个类中多个方法的名字相同,参数的类型不同、参数的个数不同或参数的排列顺序不同的现象。,62,总结,主要介绍了选择结构、循环结构的方法。,掌握实现选择结构的,if,、,switch,语句和实现重复结构的,while,、,dowhile,及,for,语句。,掌握在选择结构和重复结构中的跳转语句:,break、continue,语句和在方法中使用的,return,语句。,掌握方法的定义与引用,方法中参数的传递及方法的重载等。,63,类与对象设计,第,4,章,目标,面向对象的基本概念。,类的声明以及成员变量、方法的声明和访问权限。,对象的生成和使用。,65,4.1.1,对象,对象是具有某些特殊属性(数据)和行为方式(方法)的实体。,可以是有生命的个体,比如一个人或一只老虎。也可以是无生命的个体,比如一辆汽车或一台计算机。也可以是一个抽象的概念,如天气的变化或鼠标所产生的事件。,66,两个特征:,属性,(,Property),和,行为,(,Behavior),如:一个人的属性有:姓名、性别、年龄、身高、体重等,行为有:唱歌、打球、骑车、学习等。,4.1.2,消息,单一对象的存在并没有多大的作用,只有多个对象相互作用才会完成复杂的行为。,对象和对象之间是通过传递消息来完成相互通信的。,一个消息由三方面内容组成:,1,)消息的接收者,即消息的目标对象;,2)接收对象采用的方法,;,3)执行方法所需用的参数,(,Parameters),。,67,例如:一辆自行车放在车棚中并没有什么用,当我们人骑,上它,并加速时才体现它的作用,其中接收者(自行车),,采用的方法(加速),所需的参数(上升到更高的档位)。,4.1.3,类,类是具有共同属性和行为的对象的抽象。,类可以定义为数据和方法的集合,。,对象具有特殊属性和行为方式的实体。,68,类,对象,抽象,实例化,封装的实体=数据+方法,操作或行为,属性或状态,方法,数据或变量,4.1.4,面向对象的基本特征,1.封装:将数据成员(,Data Member),和属于此数据的操作方法(,Operating Method),,放在同一个实体(,Entity),或对象中。,2.继承:父类定义(,Define),一些通用的属性与行为,其孩子继续使用。,3.多态:在同一个类中可有许多同名的方法,但其参数数量与数据类型不同,而且操作过程与返回值也可能会不同。,69,(,1,)模块化,(,2,),信息隐藏,(,1,)实现代码复用,(,2,)简化设计过程,解决其他语言中不能重名的问题,4.2.1,类的定义,类的定义格式为:,70,类修饰符,class name,type variable1;,type variableN;,type methodname1(parameter-list),/,方法体,type methodnameN(parameter-list),/,方法体,成员变量(对象属性),成员方法,(对象行为或操作),4.2.2,成员变量,作用范围是整个类。与局部变量不同。,可以使用修饰符来控制变量的作用范围。,格式:(=),修饰符可以为:,static:,定义类变量,区分实例变量。,final,:用来声明常量,值只能用不能改。,transient,:定义暂时性变量,串行化时不能保存。,volatile,:定义共享变量,用于多线程共享。,71,4.2.3,成员方法,定义方法的一般格式:,access type methodname1(parameter-list),/,方法体,72,public void setdt(int day,int month,int year),day=23;month=7;year=2003;,方法名称,返回类型,修饰符,可选,参数列表,可选,4.2.4,类的对象,对象的声明和创建,类名 对象名;/声明,对象名=,new,类名(参数);/创建,(2),对象的使用,对象名.成员变量名;,对象名.成员方法名(参数列表);,(3)对象的销毁,自动垃圾回收机制周期性的释放无用的对象。,73,类和对象实例,public class RectangleDemo,double length;double width;,void setL(double l,double w),length=l;width=w;,double area(),return length*width;,public static void,main(String args),RectangleDemo r1;,r1=new RectangleDemo();,r1.setL(10,20);,System.out.println(“area:”+r1.area();,74,4.2.5,构造方法,构造函数名称与类名称相同,构造函数没有返回类型,其任务是在创建对象时初始化其内部状态,若无定义系统默认有一个无参构造方法,75,class Fruit,boolean seedLess;,boolean seasonal;,float price;,Fruit(boolean seed,boolean season,float p),seedLess=seed;,seasonal=season;,price =p;,4.2.6,修饰符2-1,76,所有类,A,所有子类,C,包中类,B,包中子,类,E,本类,D,public,类、变量、方法,A,protected,变量、方法,B+C,default,类、变量、方法,B,private,变量、方法,D,private protected,变量、方法,C,4.2.6,修饰符2-2,用来说明类、方法或变量的类型。,77,static,变量、方法,类变量和方法,final,类、变量、方法,常量、终类和方法,native,方法,方法体可用其他语言,abstract,类、方法,抽象类和方法,syncronized,方法,线程互斥,4.2.7,静态初始化,在类加载时,做一些起始动作的程序块。格式:,static,程序块;,78,class StaticDemo,boolean sex;,String name;,String type;,static,type=,“,学生,”,;,float score;,4.2.8,内部类,1.静态成员类,2.成员类,3.局部类,4.匿名类,79,4.2.9,类的使用,1.类对象作为类的成员,2.类对象作为方法的参数,3.方法返回值为类对象,80,总结,1.掌握面向对象程序设计的基本概念,对象、类、面向对象的基本特征(封装、继承和多态)。,2.掌握类、对象、继承、抽象类、接口和包的定义与使用。,3.掌握各种修饰符的使用方法。,81,继承与接口,第,5,章,目标,继承和多态的概念及其实现。,this,和,super,的使用。,包和接口的使用。,83,5.,1.1,类继承的实现2-1,被继承的类称为父类,继承父类的类称为子类,执行继承时,子类将获得父类的属性,并具有自身特有的属性。,84,Emoloyee,类:,name,sex,Worker,类:,category,dressAllowance,Officer,类:,empClass,vehicle,工人类,继承了父,类的姓名和性别属,性外还包含类别和,是否有服装津贴属性,主任类,还包含,级别和是否配备,交通工具属性,职员类,具,有姓名和性,别两个属性,5.,1.1,类继承的实现2-2,extends,关键字用于继承类。,声明一个继承父类的类的通常形式如下:,class subclass-name,extends,superclass-name,/,类体,没有,extends,,默认父类为,Object,只能有一个父类,即单继承,子类继承父类的全部成员,85,注意,5.,1.2 this,和,super,关键字,1.,this,的使用,(1)访问当前对象的数据成员,(2)访问当前对象的成员变量,(3)重载时用来引用同类的其他构造方法,2.,super,的使用,(1)访问直接基类中被隐藏的数据成员,(2)调用直接基类中被重写的成员方法,(3)调用直接基类的构造方法,86,5.,1.3,抽象类和抽象方法,定义目的是提供可由其子类共享的一般形式。,抽象类不能实例化。,抽象方法没有函数体。,抽象方法必须在子类中给出具体实现。,抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类。,抽象类必须继承,子类根据自身需要扩展抽象类。,abstract,不能和,final,叠用修饰类。,不能有,private,成员变量和方法。,不能和,p,rivate,、,static,、,final,叠用修饰方法。,87,5.,1.4,类对象之间的类型转换,子类对象和基类对象之间的转换:,(1)子类对象可以隐式,也可以转换为基类对象,(2)处于相同类层次的类对象之间不能进行转换,(3)子类对象在一定的条件下可以转换成基类对象,但必须使用强制类型转换。,88,5.,2.1,方法重载,方法重载是,Java,实现面向对象的多态性机制的一种方式。,同一个类中多个方法有相同的名字,不同的参数列表,这种情况称为方法重载,。,返回类型不同并不足以构成方法重载。,当重载方法被调用时,编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本。,89,5.,2.2,方法重写,方法重写是,Java,实现多态性机制的另一种方式。,在类层次结构中,如果子类中的一个方法与父类中的方法有相同的方法名并具有相同数量和类型的参数列表,这种情况称为方法重写,。,重写方法通过父类引用被调用,,Java,根据当前被引用对象的类型来决定执行哪个版本的方法。,可通过,super,关键字调用直属父类中被重写的方法。,子类定义与父类同名的变量,使父类变量隐藏,但仍有自己的空间,在子类中可调用。,子类重写父类方法,会清除父类空间,在子类中不存在。,90,5.,3.1,接口的定义,修饰符,interface,接口名称,public static final,变量名初值;,/,静态常量,public abstract native,返回值 方法名(,参数表,),throws,异常列表,/,方法,由于接口中定义的方法都是抽象、公有的,常量都是静态、公有的,所以修饰符可以省略。,91,说明:,(1)通常接口的名字以,able,或,ible,结尾;,(2)可以使用,extends,来继承接口的常量和抽象方法,,但它与类中的,extends,不同,它可以有多个父接口,,各父接口间用逗号隔开;,(3)接口中的所有常量必须是,public static final,,方法,必须是,public abstract,,这是系统默认的,不管你在定义,接口时,写不写修饰符都是一样的。,(,4,),native,要甚用。,5.,3.2,接口的实现,在类的声明中使用,implements,关键字来实现接口,一个类可以同时实现多个接口,各接口间用“,”隔开。,class classname,implements,interfacename,/,重写接口中的方法;,92,说明:,(,1,)若实现接口的类不是抽象类,则必须实现所有,接口的所有方法,即为所有的抽象方法定义方法体。,(,2,)一个类在实现某接口抽象方法时,必须使用完,全相同的方法名,参数列表。,(,3,)接口的抽象方法的访问控制符已指定为,p,ublic,,所以类在实现时,必须显示的使用,public,修饰符,否,则被警告缩小了接口中定义的方法的访问控制范围。,实例:接口的定义和实现,interface A,double g=9.8;,void show();,class B implements A,public void show(),System.out.println(“g=“+g);,93,class InterfaceTest,public static void main(String args),B b=new B();,b.show();,5.,3.3,接口的继承,interface A,int sub(int a,int b);,interface B extends A,int add(int a,int b);,interface C extends B,int mul(int a,int b);,94,组合:,interface A,int sub(int a,int b);,interface B,int add(int a,int b);,interface C extends A,B,int mul(int a,int b);,5.,3.4,接口的多态,interface viecle,abstract boolean start();,class Car implements viecle,boolean start()/,发动引擎,class Ship implements viecle,boolean start()/,抛锚,95,5.,4.1,包的创建,(1)缺省情况下为无名包,(2)有名包的创建:使用,package,语句,如:,package pname,或,package dir1.dir2.pname,包就是一个文件夹,里面存放.,class,文件,包中的“.”号表示子文件夹。,96,5.,4.2,包的引用,(1)使用包名、类名前缀,例如:,mypack1.mypack2.Myclass,(2)加载引用:使用,import,语句,格式:,import mypack1.mypack2.Myclass,或,import mypack.mypack2.*,(3)直接引用:在同一文件夹下,97,5.,4.3,设置,CLASSPATH,环境变量,CLASSPATH,变量指明“.,class”,文件存放的位置。,编译时:,javac,d,CLASSPATH,路径,Myclass.java,例如:,javac d d:java myclass.java,则直接在,d:java,下创建在,myclass.java,指明的包目录,并把,Myclass.class,拷到该目录下。,98,5.5,Java,类库,Java,中常用的包有:,applet、awt、io、lang、net、util,99,总结,1.掌握类、对象、继承、抽象类、接口和包的定义与使用。,2.,掌握定义类时的各种细节,构造方法的定义和使用,方法的重载,方法的重写。,100,数组,第,6,章,目标,掌握一维数
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服