java基础培训资料_第1页
java基础培训资料_第2页
java基础培训资料_第3页
java基础培训资料_第4页
java基础培训资料_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

Java2SE讲解第一页,共八十一页。Java基础

1、语法基础

2、面向对象 3、JDBC4、异常课程内容第二页,共八十一页。3OOP&JavaBase面向对象编程(ObjectOrientedProgramming,OOP,面向对象程序设计)第三页,共八十一页。4Java学习路线JavaSE应用程序设计:面向对象(类,继承,接口,多态,抽象与封装)异常处理,I/O编程,集合框架,GUI程序设计,多线程编程………数据库的学习:可以学习Oracle数据库安装配置、基本管理及开发,使用OEM/SQLPlus,标准SQL,DML,DDL,函数,事务,约束,序列,索引,视图,数据库设计,MySql,SQLServer的基本使用。JavaWeb应用开发: JDBC,JSP,Servlet,JavaBean,HTML,JavaScript,Session/cookie,MVC设计模式,Tomcat,Eclipse+MyEclipse.Java企业级应用开发:Struts,Hibernate,XML,J2EE/EJB,UML,Spring,AJAX第四页,共八十一页。5Java语言的发展历史Java已经成为当今最为流行的软件开发语言技术之一。第五页,共八十一页。6Java的平台无关性Java是一种既面向对象又可以跨平台的语言,即:编写一次,随处运行(Writeonce,Runanywhere);Java不仅适用于单机应用程序和基于网络的程序,也可用于创建消费类设备的附件程序,如移动电话、掌上设备等。Java源程序代码WindowsLinuxSolarisJVMJava虚拟机Java字节码(可跨平台)编译运行第六页,共八十一页。7Java虚拟机Java虚拟机(JavaVirtualMachine)是可运行Java字节码的虚拟计算机系统;使用Java语言编写的程序,实际上是运行在JVM之上,而不是运行在操作系统上;它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信。用户USER字节码程序JVM(Java虚拟机)操作系统硬件第七页,共八十一页。8Java虚拟机的运行过程JIT代码生成器.java源代码文件.class字节码文件编译时运行时硬件类加载器字节码校验器解释器第八页,共八十一页。Java发展史95年sun发布jdk1.098年jdk1.2后续jdk1.3、1.4、1.5目前jdk1.6、1.7现在SUN已推出Java2PlatformMicroEdition(Java2ME)Java2PlatformStandardEdition(Java2SE)Java2PlatformEnterpriseEdition(Java2EE)第九页,共八十一页。JDK目录src.zip:核心API所有类的源文件bin:包含编译器,解释器等可执行文件Demo:包含源代码的程序示例

include:用于本地方法的文件jre:Java运行环境lib:Java类库第十页,共八十一页。Java开发环境的下载、安装、配置下载:安装(windows环境下)配置环境变量:path验证:》Java–version》Javac编译源文件》Java执行文件》编写第一个Java文件:HelloWorld.java第十一页,共八十一页。第一个JavaApplication应用程序打开记事本,新建一个文本文件,将文件名改为Hello.java,在文件中键入如下内容并保存:publicclassHello{publicstaticvoidmain(String[]args){System.out.println("Helloworld!");}}第十二页,共八十一页。Java源程序扩展名为.java的源文件使用记事本进行编辑第十三页,共八十一页。使用javac编译器编译源文件接下来需要将源程序进行编译;进入命令提示行,切换到源文件所在的目录,执行javac命令,使用javac编译器编译源文件;javac命令的格式是:javac完整的源文件名切换到源文件所在的目录使用javac命令编译源文件光标闪烁表示语法无误,顺利通过编译第十四页,共八十一页。.class(字节码)文件顺利通过编译后将生成一个扩展名为.class的字节码文件(类描述文件)。扩展名为.java的源文件通过编译后生成的扩展名为.class的字节码文件第十五页,共八十一页。使用java解释器运行字节码文件进入命令提示行,在字节码文件所在的目录下,执行java命令,使用java解释器运行字节码文件;java命令的格式是:java类名称请注意:这里只需要类名称,而不是带扩展名的文件名。执行java命令运行字节码文件程序运行效果第十六页,共八十一页。分析程序关键字class用来定义一个类,Hello是类的名称;在Java程序中,所有的语句都必须放在某个类中;整个类及其所有成员都包含在一对花括号中(即{和}之间),它们标志着类定义块的开始和结束。定义类的一般语法:

class

类名

{ …… }第十七页,共八十一页。分析程序3-2程序必须从main函数开始执行;关键字public是访问修饰符,用来控制类成员的可见范围及作用域;关键字static允许在不创建类的实例的情况下,调用main函数;关键字void用来说明main函数是没有返回值的;args是字符串数组,用来从命令行接收参数;main函数的一般形式如下:

public

static

voidmain(String[]args) { …… }第十八页,共八十一页。分析程序String[]是字符串类型的数组;在Java中,类名称一般首字母大写;使用System.out.println()将信息输出到控制台上,即打印出来。第十九页,共八十一页。

常用Java命令◆

编译一个java源文件●

$javac<options><sourcefiles>◆运行java可运行文件●

$java[-options]class[args...]◆

生成java注释文档●

$javadoc[options][packagenames][sourcefiles][@files]例:javadoc-dD:\java\dos-sourcepathD:\java

abstractMoreType.javajavadoc-dc:\doc-sourcepathc:\src-subpackagescom.liigo(递归所有com.liigo子包里的java文件)◆

生成一个jar包●

$jar{ctxu}[vfm0Mi][jar-file][manifest-file][-Cdirectory]files

...例:jar-cvfaa.jar-Cnews\.(把news文件夹里的文件整个打包)第二十页,共八十一页。J2SE基础语法标识符数据类型数据类型的转换(主讲四类八种)运算符条件语句、循环语句:if/for/while/do{}while()/break-continue/switch第二十一页,共八十一页。标识符命名规范Java语言中,为各种变量、方法和类等起的名字称为标识(identifier)。Java标识符的命名规则:应以字母、下划线(_)、美元符($),数字组成,但不能以数字开头.Java标识符大小写敏感,长度无限制不能与关键字同名第二十二页,共八十一页。Java的基础类型及常量Java的八种基础类型:》整型:byte、short、int(默认)、long》字符型:char》浮点型:float、double(默认)》布尔型:boolean(一般用于程序的流程控制)注:Java采用Unicode编码(全球语言统一编码),每个字符占两个字节,因此一个Char类型的变量可以存放一个汉字(一个汉字占两个字节)第二十三页,共八十一页。Java的基础类型及常量长度表示范围byte1字节,8位-27~27-1short2字节,16位-215~215-1int4字节,32位-231~231-1long8字节,64位-263~263-1float4字节,32位大约为+/-3.403E38double8字节64位大约+/-1.798E308第二十四页,共八十一页。基本数据类型转换boolean类型不可转换为其他类型。整型,字符型,浮点型的数据在混合运算中相互转换遵循如下原则:》容量小的类型自动转换为容量大的,数据类型按容量大小排序如下:

>byte、short、char->int->long->float->double >bypt、short、char三者之间不互相转换,三者参与运算时先转换为int类型》容量大的在转换为容量小的时候要加强制转换符,但可能造成精度降低或溢出》浮点型常量默认值为double类型,整型常量默认值为int类型成员变量、局部变量、变量作用域在Java中,变量一旦声明,就应对其进行初始化TestConvert.java第二十五页,共八十一页。基本数据类型转换

inti=1,j;

floatf1=0.1;

floatf2=123;

longl1=12345678;

longl2=8888888888;

doubled1=2e20,d2=20;

byteb1=1,b2=2,b3=129;j=j+10;i=i/10;i=i*0.1;

byteb=b1-b2;

floatf3=f1+f2;

floatf4=f1+f2*0.1;

doubled=d1*i+j;

floatf=(float)(d1*5+d2);第二十六页,共八十一页。Java数据类型划分图数据类型基本数据类型引用数据类型类:class接口:interface浮点型:float、double整型:byte、short、int、long布尔型:boolean字符型:char数值型数组第二十七页,共八十一页。运算符:operatorJava语言支持的运算符:》算术运算符:+,-,*,/,%,++,--》关系运算符:>,<,>=,<=,==,!=》逻辑运算符:!,&,|,^,&&,||》位运算符:&,^,|,~,>>,<<,>>>基本不用》赋值运算符:=》扩展赋值运算符:+=,-=,*=,/=》字符串连接运算符:+

注:++(--)在前时先计算后取值在后时先取值后计算intx=2;System.out.println(1+++x+2+x);?x=2;System.out.println(1+x+++2+x);?第二十八页,共八十一页。逻辑运算符逻辑运算符:【!逻辑非】【&逻辑与】【|逻辑或】【^逻辑异与】【&&短路与】【||短路或】ab!aa&ba|ba^ba&&ba||btruetruefalsetruetruefalsetruetruetruefalsefalsefalsetruetruefalseTruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalsepublicstaticvoidmain(String[]args){booleana=true,b=false,c;c=!a;System.out.println(c);c=a^b;System.out.println(c);c=a|b;System.out.println(c);c=a&b;System.out.println(c);c=a||b;System.out.println(c);c=a&&b;System.out.println(c);}”^“逻辑异与:相同就为false,不同则为true|和||区别?&和&&区别?第二十九页,共八十一页。字符串连接符“+”除用于加法运算外,还可以用于字符串的连接inti=55+21;Strings=“wang”+“hz”;“+”运算符两侧的操作数只要有一个字符串(String)类型,系统就会自动将另一个操作数转换为字符串类型,然后连接:

inti=12; System.out.println(“wanghz”+i);

输出结果:wanghz12Strings1=10+2+”qing”Strings2=“qing”+10+2s1和s2的输出结果会是什么?注:System.out.println(value);中的value无论是何类型,都会先转为字符型,然后打印第三十页,共八十一页。if条件语句条件语句格式:if…if…else…if…elseif…if…elseif…elseif…else…只有一句要执行的语句时{}可以省略但是建议不要去

if(表达式1){

语句块1}elseif(表达式2){语句块2}else{语句块3}表达式语句块falsetrueTestIf.java第三十一页,共八十一页。循环控制语句For循环控制语句格式:

for(表达式1;boolean类型的表达式2;表达式3){

语句块

}注:continue和break区别?表达式1表达式2语句块true表达式3falseTestFor.java课堂练习编写程序,用以个for循环计算1!+2!+3!+……+10!的值,并打印出计算结果。OddSum.java第三十二页,共八十一页。while与do-whileWhile格式:

while(表达式){

语句块

}do-while格式:

do{

语句块

}while(表达式);表达式true语句块false语句块表达式truefalse两者区别?WhileTest.java第三十三页,共八十一页。循环语句举例//输出1—100内前5个能被3整除的数public

classTest{public

static

voidmain(String[]args){intnum=0,i=1;while(i<=100){if(i%3==0){System.out.print(i+"");num++;}if(num==5){

break;}i++;}}}//输出101—200内的质数public

classTest{public

static

voidmain(String[]args){for(inti=101;i<200;i+=2){booleanf=true;for(intj=2;j<i;j++){if(i%j==0){f=false;

break;}}if(!f){

continue;}System.out.print(i+"");}}}第三十四页,共八十一页。Switch条件控制Switch格式:

switch(表达式){case表达式1:

语句块1break;case表达式2:

语句块2break;default:(可有可无)

语句块3break;}小心case穿透,推荐使用break语句多个case可以合并到一起default可以省略,但不推荐省略注:表达式必须是int类型的(byte,short,char,int),break语句穿透问题SwitchTest.java第三十五页,共八十一页。方法Java中的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式:[修饰符1修饰符2..]返回值类型方法名(形式参数列表){Java语句}Sample:publicStringgetName(Stringname){return“name=”+name;}形式参数:在方法被调用时,用于接收外界输入的数据。实参:调用方法时,实际传给方法的数据。返回值:方法在执行完毕后返还给调用它的环境的数据。返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型voidJava语言中使用下述形式调用方法:对象名.方法名(实参列表)实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配return语句终止方法的运行,并指定要返回的数据返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型voidTestFuncation.java第三十六页,共八十一页。基本语法总结标识符数据类型数据类型的转换(主讲四类八种)运算符条件语句、循环语句:if/for/while/do{}while()/break-continue/switch第三十七页,共八十一页。面向对象类与对象对象在内存中的解析方法的重载(overload)关键字:this、static、以及他们与类之间的关系package和import语句继承访问控制符多态第三十八页,共八十一页。类与对象类:具有相同属性和功能的一类事物(属性和方法的集合)。抽象:对具有相同属性和方法的一类事物的描述过程就叫抽象,抽象的结果就是类。对象:类的一个实例,对象是组成类的元素。第三十九页,共八十一页。类的定义类定义的格式:[修饰符]class类名

{

类体代码

}类的定义主要有两部分组成:成员变量和方法//用class关键字定义类,例如:classPerson{//成员变量定义

privateintid=1;privateintage=20;//定义方法

publicintgetId(){returnid;}

publicintgetAge(){returnage;}publicvoidsetAge(inti){age=i;}}第四十页,共八十一页。对象的创建Java语言中除基本数据类型之外的变量类型都称之为引用类型。Java中的对象是通过引用对其操作的。例如://声明了一个Person类型的变量,但并没//有使它指向一个对象。Personp;//使用new语句创建了一个Person类型的对象,并用p指向它,以后可以通过p完成对它的操作。p=newPerson();p=nullstackheapPersonp;p=newPerson();pid:1age:20第四十一页,共八十一页。方法的调用

classPerson{//成员变量定义

privateintid;privateintage=20;//定义方法

publicintgetId(){returnid;}

publicintgetAge(){returnage;}publicvoidsetAge(inti){age=i;}

}publicclassTest{publicstaticvoidmain(String[]args){

Personp=newPerson();p.setAge(34);intage=p.getAge();System.out.println(age);}}使用对象引用.方法名(参数列表)来调用对象的方法。第四十二页,共八十一页。封装性类的封装性:即不能让外面的类随意修改一个类的成员变量在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用;

为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有

读取和赋值操作,我们一般定义两个方法来实现这两种操作,即:getXxx()与setXxx();

一个类就是一个模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他的一切内容。再进行程序设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。第四十三页,共八十一页。构造方法类内部一种特殊的方法,创建对象时所调用的方法。使用new+构造方法名创建一个新的对象。构造方法是定义在java类中的一个用来初始化对象的方法。构造方法没有返回值类型,它与其他的方法在此处不同构造方法的方法名与类名完全相同classPerson{//成员变量定义intid;intage=20;Person(inti,intn){

id=i;age=n;

}第四十四页,共八十一页。构造方法创建对象时,使用构造方法初始化对象的成员变量。

publicclassTest{publicstaticvoidmain(String[]args){//创建对象Persontom=newPerson(1,25);Personjack=newPerson(2,20);}}tomstackjack125220heap第四十五页,共八十一页。构造方法每个类都至少有一个构造方法,如果我们没有显示的声明,JVM会在加载该类时为其添加一个public的无参的构造方法:类名(){}例如:classPoint{intx;inty;}….main…{Pointp=newPoint();}第四十六页,共八十一页。课堂练习定义一个点(point)类用来表示三维空间中的点(有三个坐标)。要求如下:1.可以生成具有特定坐标的点对象2.提供可以设置三个坐标的方法3.提供可以计算该”点”到原点距离平方的方法4.编写程序验证上面三点TestPoint.java第四十七页,共八十一页。方法的重载方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时会根据不同的参数表选择对应的方法。判断方法重载的依据:1、在同一个类内2、方法名相同3、参数的类型不同,或者参数的个数不同,或者参数的排列顺序不同4、方法的返回值的不同不能作为判断方法重载的依据,仅仅是返回值的不同,就造成了方法的重名,会报错。TestOverLoad.java第四十八页,共八十一页。构造方法的重载与普通方法一样,构造方法也可以重载例如:Person类的构造方法classPerson{intid;intage;publicPerson(){ id=1; age=20}publicPerson(intm){ id=m; age=20;}publicPerson(intm,intn){ id=m; age=n;}}课堂练习:利用Person类,编写程序,分别用三种构造方法创建三个Person对象,如下图所示:p1p2p3120220536第四十九页,共八十一页。关键字this在类的方法中使用。This:当前对象的一个引用,指向它自己,在类的内部使用。有时使用this可以处理方法中成员变量和参数重名的情况。

TestThis.javathisheap第五十页,共八十一页。关键字static

在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量该变量只有一份,保存在内存的datasegment中。用static声明的方法,表示该方法为静态方法,在调用方法时,不会将对象的引用传递给它,所以在static方法中,不能直接调用非静态的成员变量或非静态的方法。可以直接通过类名.静态方法名调用。可以通过对象、引用或类名(不需要实例化)访问静态成员。TestStatic.javaTestFuncation.java第五十一页,共八十一页。package和import语句为便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,java引入包(package)机制。package语句作为java源文件的第一条语句,指定该文件中定义的类所在的包。它的格式为:packagepkg1[.pkg2[.pkg3…]];Java编译器把包对应于文件系统的目录管理,package语句中,用‘.’来指明包的层次,例如使用语句:packagecom.test;则该文件中所有的类位于.\com\test目录下TestPackage.java第五十二页,共八十一页。继承子类通过继承获得基类的所有属性(包括私有的)及方法。在创建子类对象时,可以通过子类对象调用基类的方法和访问除去私有的一切成员变量。继承提高了代码的复用性。子类可以扩展基类的方法及属性。子类对象的创建伴随着父类对象的创建TestExtends.java(内存分析)ageageAnimalcolorCat第五十三页,共八十一页。访问权限控制访问控制本类同一包中的类其他包中子类其他包中的类publicprotected×缺省××private×××Java权限修饰符public、private、protected置于类的成员定义前,用来限定其它对象对该类对象成员的访问权限。

对于class的权限修饰只可以用public和default。public类可以在任何地方被访问。default类只可以被同一个包内的类访问。

TestAccess.java第五十四页,共八十一页。继承中的权限控制classParent{privateintn_private=1;intn_default=2;protectedintn_protected=3;publicintn_public=4;}classChildextendsParent{publicvoidf(){

n_private=10;//errorn_default=20;n_protected=30;n_public=40;}}第五十五页,共八十一页。课堂练习编写一个Computer

类,提供加(add)、减(reduce)、乘(sheng)、除(div)方法。SubComputer类,继承Computer

类,提供取余(mod)、求平方(square)、立方(cube)方法。TestComputer.java第五十六页,共八十一页。方法的重写在子类中可以根据需要对从基类中继承来的方法进行重写。重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。重写方法的访问权限不能比被重写方法的低。TestOverride.java第五十七页,共八十一页。super关键字在子类中可以使用super关键字来引用基类的成分,例如:classFatherClass{publicintvalue;publicvoidf(){value=100;System.out.println(“FatherClass.value=”+value);}}classChildClassextendsFatherClass{publicintvalue;publicvoidf(){super.f();//这里的super可以省略吗?value=200;System.out.println(“ChildClass.value=”+value);System.out.println(“super.value=”+super.value);}}………….main………….ChildClasscc=newChildClass();s.f();第五十八页,共八十一页。thissupervalue:200value:100cc第五十九页,共八十一页。super关键字classPerson{ publicstaticvoidprt(Strings) {System.out.println(s);} Person(){prt("APerson.");} Person(Stringname){prt("Apersonnameis:"+name);}}publicclassChineseextendsPerson{ Chinese(){

super();//调用父类构造函数(1),必须写在第一行

prt("Achinese.");} Chinese(Stringname){

super(name);//调用父类具有相同形参的构造函数(2)

prt("hisnameis:"+name);} Chinese(Stringname,intage){ this(name);//调用当前具有相同形参的构造函数(3)

prt("hisageis:"+age);} publicstaticvoidmain(String[]args){ Chinesecn=newChinese(); cn=newChinese("kevin"); cn=newChinese("kevin",22);}}第六十页,共八十一页。课堂练习创建一个仅有一个非缺省构造器的基类,并创建一个带有缺省构造器和非缺省构造器的导出类。在导出类的构造器中调用基类的构造器。第六十一页,共八十一页。关键字finalfinal修饰类,表示该类是不能被继承的;final修饰成员变量,表示该变量为常量,值不可以被修改,变量名一般采用大写字母,字母之间通过下划线连接;final修饰方法,表示该方法不能被重写,但是可以使用一般final和static一起用,当类被多次创建时,只创建一次变量,可以节约内存。第六十二页,共八十一页。classAnimal{

publicStringname;Animal(Stringname){

=name;}}classCatextendsAnimal{

publicStringeyesColor;Cat(Stringn,Stringc){

super(n);

this.eyesColor=c;}}classDogextendsAnimal{

publicStringfurColor;Dog(Stringn,Stringc){

super(n);

this.furColor=c;}}多态第六十三页,共八十一页。publicclassTest{ publicstaticvoidmain(String[]args) { Testtest=newTest(); Animala=newAnimal("name"); Catc=newCat("catName","blue"); Dogd=newDog("dogName","black"); test.f(a); test.f(c); test.f(d); }publicvoidf(Animala){ System.out.println("name:"+); if(ainstanceofCat){ Catcat=(Cat)a; System.out.println(""+cat.eyesColor+"eyes"); }elseif(ainstanceofDog){ Dogdog=(Dog)a; System.out.println(""+dog.furColor+"fur"); } }}多态第六十四页,共八十一页。多态TestPolymoph/Test.java多态是指在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。上面例子中,根据Lady对象的成员变量Pet所引用的不同的实际类型而调用相应的enjoy方法。classBirdextendsAnimal{ privateStringfeatherColor; Bird(Stringn,Stringf){ super(n); this.featherColor=f; } publicvoidenjoy(){ System.out.println("鸟叫声........."); }}publicclassTest{ publicstaticvoidmain(String[]args){Birdb=newBird(“birdname”,”green”); Ladyl3=newLady("l3",b); l3.myPetEnjoy(); }}1.要有继承2.要有重写3.父类引用指向子类对象第六十五页,共八十一页。课堂练习分析上面的程序,体会“多态特性”对于系统可扩充性的重要性。利用多态性编程,实现求三角形,正方形和圆形面积。方法:抽象出一个共享父类,定义一函数为求面积的公共界面,再重新定义各形状的求面积函数。在主类中创建不同类的对象,并求得不同形状的面积。MianJi.java第六十六页,共八十一页。抽象类用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰方法时,该方法叫做抽象方法。含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。抽象类不能被实例化。抽象方法只需声明,不需要实现。TestAbstract.javaabstract

classAnimal{

privateStringname;Animal(Stringname){

=name;}

abstract

public

voidenjoy();}classCatextendsAnimal{

private

String

eyesColor;Cat(Stringn,Stringc){

super(n);

this.eyesColor=c;}

public

voidenjoy(){System.out.println("猫叫声.........");}}第六十七页,共八十一页。课堂练习创建一个基类,包含抽象方法print(),并在导出类中将其实现。重载的版本中会打印基类中定义的某个整型变量的值。在定义该变量时,请赋予非零值。在基类的构造器中,可以调用这个方法。现在,在main()方法中,创建一个导出类对象,然后调用它的print()方法。解释发生的情形。

第六十八页,共八十一页。接口接口是(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。接口定义举例:publicinterfacerunner{intid=1; publicvoidstart(); publicvoidrun(); publicvoidstop();}第六十九页,共八十一页。接口特性多个无关的类可以实现同一个接口。接口不能实例化。一个类可以实现多个无关的接口。定义java类的语法格式:

<modifier>class<name>[extends<superclass>][implements<interface>[,<interface>]…]{…..}接口中声明属性默认为publicstaticfinal的,也只能是publicstaticfinal的;即使不写,在编译时会为其加上public

staticfinal。接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的;接口可以继承其他的接口,并添加新的属性和方法。第七十页,共八十一页。interfaceSinger{public

voidsing();public

voidsleep();}classStudentimplementsSinger{privateStringname;Student(Stringname){=name;}publicStringgetName(){returnname;}public

voidstudy(){System.out.println("studying");}public

voidsing(){System.out.println("studentissinging");}public

voidsleep(){System.out.println("studentissleeping");}}接口举例第七十一页,共八十一页。interfacePainter{public

voidpaint();public

voideat();}classTeacherimplementsSinger,Painter{privateStringname;Teacher(Stringname){=name;}publicStringgetName(){returnname;}public

voidteach(){System.out.println("teaching");}public

voidsing(){System.out.println("teacherissinging");}public

voidsleep(){System.out.println("teacherissleeping");}public

voidpaint(){System.out.println("teacherispainting");}public

voideat(){System.out.println("teacheriseating");}}第七十二页,共八十一页。public

classTest{public

static

voidmain(String[]args){Singers1=newStudent("le");s1.sing();s1.sleep();Singers2=newTeacher("steven");

温馨提示

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

评论

0/150

提交评论