版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章Java语言基础2.1Java程序结构2.2基本语法2.3程序控制语句2.4数组2.5面向对象技术2.6包2.1Java程序结构Java语言特点Java程序示例Java工作原理Java语言特点简单和健壮:不用进行指针运算和存储器管理,简化设计减少出错.面向对象:具有良好的代码重用性.分布式:Java拥有一个网络协议对象库(TCP/IP,HTTP,FTP等),可以象访问当地文件一样访问Internet上的对象.解释性和高性能:源程序生成字节码.平台无关:JVM实现跨平台和可移植-WriteOnce,RunAnywhere.多线程:允许一个应用程序同时做多个任务.安全:拒绝执行非法的内存访问(如自动检查数组边界)或超越权限的访问等。Java程序示例packageexample;//创建包(程序存放目录)publicclassHello{ publicstaticvoidmain(String[]args){ System.out.println("HelloJava!"); }}源程序名为:Hello.java说明Java程序都是以类class来组织,一个文件中可以有多个类.一个类能被解释器直接启动运行,这个类就必须有main函数,一个程序只能有一个main函数.类名前可以加public关键字,也可以不加,加了以后保存的文件名必须要跟这个类的名字相同,否则编译会出错.如果源文件中没有public类,则源文件用什么名字都可以.一个源文件中只能含有一个标记为public的类.一个文件中可以有多个类定义,当编译完成这样的源文件后会生成多个跟这些类名相对应的字节流文件(.class)。
含多个类的Java程序publicclassHello{publicstaticvoidmain(Stringargs[]){testt=newtest();t.f1();
}}classtest{ voidf1(){System.out.println("f1called");}}程序将生成两个class文件:Hello.classtest.classJava工作原理【Return】JVM2.2基本语法数据类型常量与变量运算符和表达式【Return】数据类型
名称关键字占用字节数数据类型基本类型整数类型字节型byte1
短整型short2整型int4长整型long8浮点类型浮点型float4双精度型double8字符类型char2布尔类型boolean1复
合
类
型字符串String
数组
类class
接口interface
【Return】常量整型常量(4字节)17(十进制),017(八进制),0x17(十六进制),17L(长整型)浮点型常量2.3,-.23,2.3e3,.2e-4,2.3f,2.3d常量布尔常量:true、false注意:int到boolean不能自动转换: inti=1;if(i)//Error if(i!=0)//Correct常量字符常量’A’,’\n’,’\101’,’\u0041’(Unicode字符)字符串常量"HelloJava\n"连接操作符“+”:"Hello"+"Java"+"\n"常量符号常量自定义:finaldoublepi=3.14159;系统提供的符号常量:Integer.MIN_VALUEInteger.MAX_VALUE…变量必须先声明后使用例如:
inti,j=9; charch='A'; booleanflag=false; floata=3.4f;(‘f’不能丢:floata=3.4;×)doubleb=3.4;√变量字符串变量(实际上是String类的一个实例)Strings1="Hello",s2="Java",s3; s3=s1+s2;//s3="HelloJava"inti=10;Stringstr="i="+i;//str的值为"i=10"说明:如果字符串与其他类型变量进行“+”运算,系统将自动将其他类型转换为字符串。一个问题如何接收键盘输入的数据?如何从键盘接收数据(1)packageexample;importjava.util.Scanner;publicclassHello{publicstaticvoidmain(Stringargs[]){Scannerin=newScanner(System.in);inti=in.nextInt();//输入int类型数据
floatf=in.nextFloat();//输入float类型数据doubled=in.nextDouble();//输入double类型数据
System.out.println("你输入的数是:"+i);System.out.println("你输入的数是:"+f);
System.out.println("你输入的数是:"+d);}}对数据输入很严格,不能出错,否则…如何从键盘接收数据(2)importjava.io.*;publicclassHello{publicstaticvoidmain(Stringargs[]){
try{
BufferedReadercin=newBufferedReader( newInputStreamReader(System.in));Strings=cin.readLine();
inta=Integer.parseInt(s);
System.out.print(a);
}catch(IOExceptione){}}}Java数据转换字符串→数值byteb=Byte.parseByte("123");shorts=Short.parseShort("123");inti=Integer.parseInt("123");longl=Long.parseLong("123");floatf=Float.parseFloat("1.23");doubled=Double.parseDouble("1.23");数值→字符串Strings=String.valueOf(value); 其中value为任意一种数字类型。String类常用方法方法说明intlength()
返回字符串的长度booleanequals(Objectobj)
比较字符串是否相等booleanequalsIgnoreCase(anotherString)比较字符串是否相等(不区分大小写)intcompareTo(Stringstr)
比较字符串,返回两者之间的差值Stringconcat(Stringstr)
连接字符串Stringsubstring(intbIndex)
返回字符串从bIndex开始的子串Stringsubstring(intbIndex,inteIndex)
返回从bIndex开始至eIndex的子串charcharAt(intindex)
返回index指定位置的字符Stringtrim()
去掉字符串两端的空格注:位置值从0开始注:不要使用==调用形式:字符串变量.方法名√String类常用方法方法说明intindexOf(Stringstr)
返回str在字符串中第一次出现的位置intlastIndexOf(Stringstr)返回str在字符串中最后一次出现位置Stringreplace(charoldc,charnewc)
以newc字符替换串中所有oldc字符StringtoLowerCase()将字符串转换为小写StringtoUpperCase()将字符串转换为大写booleanisEmpty()判断字符串是否为空程序练习将一个字符串逆序输出。去掉字符串末尾的空格。将字符串中的大写字母变小写,小写字母变大写。参考【Return】去掉字符串末尾的空格:Stringstr="asd";Stringntr=("A"+str).trim().substring(1);System.out.println("str=\""+str+"\"");System.out.println("ntr=\""+ntr+"\"");运算符和表达式运算符描述优先级.[]()
域运算,数组下标,括号++---!~
单目运算new(type)
分配空间,强制类型转换*/%
算术乘、除、求余运算+-
算术加减运算<<>>>>>
位运算<<=>>=
小于,小于等于,大于,大于等于==!=
相等,不等&^|
按位与,按位异或,按位或&&
||逻辑与,逻辑或?:
条件运算符=*=/=%=+=-=<<=>>=>>>=&=^=|=
赋值运算Java
仅仅在for()循环里支持逗号运算符,在其他的情况下是不支持的。算术运算注意两个整数类型的数据做除法时,结果只保留整数部分.如:2/3=0.
自增与自减运算符只适用于变量.如10++;×%运算不仅能用于整型,也能用于浮点类型如9%2=19.5%2=1.5√位运算注意<<:每左移一位,右边补0,最高位移出丢弃bytea=32;//a:00100000 inti=a<<2;//a<<2:10000000i:0000000010000000 bytej=(byte)(a<<2);结果多少?>>:每右移一位,最高位由原来的最高位补充(正数补0,负数补1)>>>:0填充右移(无符号右移)inta=-1;a>>>=24;则a=?关系运算注意关系表达式的运算结果是逻辑值:true、false.inta=1,m=4;booleanc=a<b; if(c)…//ok或if(!c)…if(a)…//必须改成if(a!=0)if(!m)…//必须改成if(m==0)布尔逻辑运算注意只能是布尔量(true,false)参加运算,结果也是布尔型布尔量也可以:&、|、!、^(相当于单个的位运算)&&、||
具有短路效应例如:(m=a>b)&&(n=c>d)
如果m=false,则n=c>d不计算示例求一个三位数的数字之和。如123的数字和为6。【Return】2.3程序控制语句Java控制语句与C/C++的几乎完全相同。break和continue语句有差别。break语句从switch语句中退出;强行退出一个循环;当作goto语句来用,用法:break标签;标签可标识控制需要转换到的任何有效语句(块)
用法标签名:语句示例publicclasstest{ publicstaticvoidmain(Stringargs[]) { for(inti=0;i<3;i++) {System.out.print("Pass"+i+":"); for(intj=0;j<10;j++) {if(j==5)break;System.out.print(j+"");
} System.out.println();
}}}运行结果:Pass0:01234Pass1:01234Pass2:01234示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {
for(inti=0;i<3;i++) {System.out.print("Pass"+i+":"); for(intj=0;j<10;j++) {if(j==5)break
System.out.print(j+"");
} System.out.println();
}}}运行结果:Pass0:01234outer;outer:示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {booleant=true;
first:{
second:{
third:{System.out.println("Startthethirdblock");if(t)breaksecond;System.out.println("Endthethirdblock");}}System.out.println("Endthesecondblock");}System.out.println("Endthefirstblock");}}运行结果:StartthethirdblockEndthesecondblockEndthefirstblockcontinue语句结束本次循环,跳至下一次循环;continue标签;(继续标签处循环)示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {for(inti=0;i<10;i++) {System.out.print(i+""); if(i%2==0)continue; System.out.println();}}}运行结果:0123456789示例publicclasstest{ publicstaticvoidmain(Stringargs[]) {outer:for(inti=1;i<10;i++){for(intj=1;j<10;j++){if(j>i){System.out.println();continueouter;}System.out.print(""+(i*j));}System.out.println();} }}运行结果:1
24
369
481216
510152025
61218243036
7142128354249
816243240485664
91827364554637281编程练习输入10个整数,输出最大值和最小值。判断输入的字符串是否为回文,如abcba。递归函数求2+4+6+…+100之和。输入一个字符串,分别统计大写字母、小写字母、数字、空格以及其他字符个数。有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?【Return】参考inti,n=10,max=0,min=0,temp=0;try{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));max=min=Integer.parseInt(br.readLine());}catch(IOExceptione){};for(i=2;i<=n;i++){try{BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));temp=Integer.parseInt(br.readLine());if(temp>max)max=temp;if(temp<min)min=temp;}catch(IOExceptione){};}System.out.println("max="+max+"\nmin="+min);参考Stringstr=“abcba";booleanflag=true;charch1,ch2;for(inti=0;i<str.length()/2;i++){ch1=str.charAt(i);ch2=str.charAt(str.length()-i-1);if(char1!=char2){flag=false;break;}}if(flag)System.out.println("是回文");elseSystem.out.println("不是回文");2.4数组创建数组inta[];//数组声明
a=new
int[5];//用new语句动态分配存储空间
或直接用:inta[]=newint[5];inta[5];×另一种声明方式:int[]a;//中括号放在类型后
int[]s1,
s2; //s1,s2都是整型数组ints1[],s2; //s1是整型数组,s2是整型变量数组初始化inta[]=newint[5];a[0]=1;a[2]=2;…;a[4]=5;
或:inta[]={1,2,3,4,5};
或:inta[]=newint[]{1,2,3,4,5};字符串数组:String[]names={“Tom”,“Jerry”,“Simon”};类对象数组: MyClass[]mc= {newMyClass(…),newMyClass(…)};注意特殊点数组大小可变inta[]=newint[5]; a=newint[10];
第一个数组空间被丢弃,除非对它的其它引用保留在其它地方。数组边界Java程序运行时系统会检查数组边界.也可使用length属性:inta[]=newint[10];for(inti=0;i<a.length;i++)System.out.println(a[i]);二维数组二维数组定义inta
=newint
3
3
;或int
a=newint
3
3
;等价于: inta[][]=newint
3
;//先第一维指定 a[0]=newint[3];//再第二维分配 a[1]=newint[3]; a[2]=newint[3];在Java中,多维数组实质上是数组的数组。二维数组初始化示例inta
=newint
3
3
; a[0][0]=1;a[0][1]=2;…a[2][2]=9;inta
={{1,2,3},{4,5,6},{7,8,9}};//矩形inta
={{1},{4,5},{7,8,9}};//三角
则a[1][1]=5,a[1][2]出错注意特殊点第二维大小可不相等(非矩形数组)inta[][]=newint
3
;//第一维指定 a[0]=newint[1];//第二维不相等 a[1]=newint[2]; a[2]=newint[3];编程练习计算Fibonacci数列前30项。数组存储10个整数,统计正数和非正数个数。10个元素的整型数组,要求:排序:选择排序查找数据:折半查找插入数据:不存在则插入,存在则告知所有位置值.打印1到n2(n为奇数)的自然数构成的魔方阵,使得每一行、每一列和对角线之和均相等。【Return】如n=3时816357492魔方阵提示程序参考importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;public
classMagicSquare{
public
static
int
mat[][];
public
static
voidmain(String[]args){System.out.print("请输入一个奇数:");BufferedReaderin=newBufferedReader(new
InputStreamReader(System.in));
intr=0;
try{Stringst=in.readLine();Integeri=newInteger(st);r=Value();}
catch(IOExceptione){e.printStackTrace();}
mat=new
int[r][r];
mat=oddnumber(r);
print(r);}程序参考public
static
int[][]oddnumber(intr){
final
intSIZE=r;inti=0,j,k,n;n=SIZE;j=n/2;
for(k=1;k<=n*n;k++){
mat[i][j]=k;
if(k%n==0)i=(i+1)%n;
else{i=(i-1+n)%n;j=(j+1)%n;}}
return
mat;}public
static
voidprint(intr){
for(inti=0;i<r;i++){
for(intj=0;j<r;j++)System.out.print(mat[i][j]+"\t");System.out.println();}}}2.5面向对象技术类与对象构造函数重载继承接口【Return】类与对象对象的概念对象是指一组属性以及这组属性上专用操作的封装体。操作将使属性发生变化:小章.改年龄(18)小章.跳槽(好莱坞)你的女朋友(对象)属性姓名(小章)年龄(28岁)工作单位…操作改年龄()跳槽()…封装类与对象类的概念类是对具有相同属性和相同操作的一组相似对象的定义.类是对象的抽象,对象是类的实例。类的基本定义class类名{
类型属性变量1; …
类型属性变量n;
类型方法1([参数表]){…} …
类型方法n([参数表]){…}}属性方法示例classGF{StringXM;intAGE;StringGZDW;voidsetXM(Stringxm){XM=xm;}StringgetXM(){returnXM;}voidsetAge(inta){AGE=a;}intgetAge(){returnAGE;}voidsetGZDW(Stringdw){GZDW=dw;}StringgetGZDW(){returnGZDW;}publicstaticvoidmain(Stringargs[]){GFgf1=newGF();//用默认构造函数创建对象gf1.setXM("小章");
gf1.setAge(30);
gf1.setGZDW(“好莱坞”);
}}属性(实例变量/成员变量)方法(成员函数)如何在另一个包的另一个类中实现main内容访问控制一个类能够访问自己的数据成员和成员方法。但是,其他类是否能访问这个类的数据成员或成员方法?--访问控制问题。Java访问控制符有4种:publicprivateprotecteddefault类的访问控制类的访问控制有2种:public和default.public类:可以在任何一个包中的任何一个类中被访问和继承.default类:只能在同一个包中被其它类所访问和继承。注意一个类作为整体对程序的其它部分可见,并不能代表类内的所有的成员变量和成员方法也对程序的其它部分可见.类的成员变量和成员方法能否被其它类所访问,还要看这些它们自己的访问控制符。类成员访问控制【Return】this关键字(1)指代当前对象本身
booleaninst(){if(thisinstanceofGF)returntrue;elsereturnfalse; }
执行下面语句: GFgf1=newGF(); System.out.println(gf1.inst());//输出为:trueinstanceof:判断一个对象是否为指定类的实例.this关键字(2)访问本类的成员变量和方法
GF(Stringxm,inta,Stringdw){XM=xm;AGE=a;GZDW=dw;}this.XM=xm;this.AGE=a;this.GZDW=dw;构造函数(构造器、构造方法)作用:构造函数是在创建对象时(new语句)自动调用的函数,其作用主要是用于初始化实例变量.特点:构造函数名与类同名,构造函数不能指定类型(包括void),也无任何返回值.一个类可以有多个不同的构造函数.如果没有定义构造函数,系统将会自动为类添加一个默认的构造函数(不带参数,执行空操作).一旦自定义了构造函数,默认的构造函数将关闭,系统转向调用相应的构造函数创建对象。默认构造函数publicclassGF{StringXM;intAGE;StringGZDW;
GF(){}//默认构造函数,不带参数,执行空操作 voidsetXM(Stringxm){XM=xm;}StringgetXM(){returnXM;}…publicstaticvoidmain(Stringargs[]){GFgf1=newGF();//用默认构造函数创建对象gf1.setXM(“小章”);
gf1.setAge(30);
gf1.setGZDW(“好莱坞”);
…}}publicclassGF{StringXM;intAGE;StringGZDW;
GF(Stringxm,inta,Stringdw){XM=xm;AGE=a;GZDW=dw;}voidsetXM(Stringxm){XM=xm;}StringgetXM(){returnXM;}voidsetAge(inta){AGE=a;}intgetAge(){returnAGE;}voidsetGZDW(Stringdw){GZDW=dw;}StringgetGZDW(){returnGZDW;}publicstaticvoidmain(Stringargs[]){GFgf1=newGF(“小章”,30,“好莱坞”);//用自定义构造函数创建对象gf1.setGZDW(“北影");…}}系统默认构造函数自动关闭自定义构造函数publicclassGF{StringXM;intAGE;StringGZDW;GF(){}//默认构造函数
GF(Stringxm,inta,Stringdw){XM=xm;AGE=a;GZDW=dw;}voidsetXM(Stringxm){XM=xm;}StringgetXM(){returnXM;}voidsetAge(inta){AGE=a;}intgetAge(){returnAGE;}voidsetGZDW(Stringdw){GZDW=dw;}StringgetGZDW(){returnGZDW;}publicstaticvoidmain(Stringargs[]){GFgf1=newGF(“小章”,30,“好莱坞”);
GFgf2=newGF();…}}【Return】重载同一个类中的2个或以上的方法(函数)可以有同一个名字,只要它们的参数声明不同即可.(如类型不同、个数不同)系统能够根据不同情况自动调用一个合适的方法函数。同一方法名实现1实现2…实现n单入口多实现示例classoverload{voidtest(){System.out.println("Noparameters");}voidtest(inta){System.out.println("a:"+a);}
voidtest(inta,intb)
{System.out.println("aandb:"+a+""+b);}doubletest(doublea){System.out.println("doublea:"+a);returna*a;}
publicstaticvoidmain(Stringargs[]){overloado=newoverload();o.test();o.test(2);o.test(2,3);o.test(2.0);}}注意不能以返回类型的不同来进行重载。哪些可以重载:①intfun(int)②intfun(int,double)③doublefun(int,double)④intfun(double,int)【Return】继承继承是一种由已有类创建新类的机制.继承是类间的基本关系,是子类共享父类(Java又称为超类,C++称为基类)中定义的数据和方法的机制.子类除了继承其父类(或祖先类)的属性和操作外,还可以定义自己特有的属性和操作,也可以对父类(或祖先类)中的操作进行重新定义。图示classA{
inta;voidf1();}classBextends
A{
intb;voidf2();}B类的成员intavoidf1()intbvoidf2()继承的自己特有的示例classA
{inta;voidf1(){a=100;System.out.println("a="+a);}}classBextendsA
{intb;voidf2(){b=200;System.out.println("b="+b);}}publicclasshello{publicstaticvoidmain(Stringargs[]){Bb1=newB();
b1.f1();b1.f2();}}如何在另一个包的另一个类中实现上述继承注意Java只支持单继承(一个类只能有一个父类),不支持多继承。(C++支持多继承)Java使用接口(interface)来克服单多继承缺陷。雇员技术人员管理人员销售人员销售经理多重继承:一个子类可以有多个直接父类,该子类可以全部或部分继承所有直接父类的数据成员及成员方法。编程练习1编写一个类,该类封装了一元二次方程的3个系数的和计算实根的方法。publicclasstest{publicstaticvoidmain(String[]args){
equatione1=newequation(1,2,1);
if(e1.getValue()) {System.out.print(e1.d[0]); System.out.print(";"); System.out.println(e1.d[1]); }else{System.out.print("norealroot");}}}程序参考classequation{privatefloata;privatefloatb;privatefloatc;
publicdouble[]d;
publicequation(floata,floatb,floatc){this.a=a;this.b=b;this.c=c;
this.d=newdouble[2];}
booleangetValue(){floattemp=b*b-4*a*c;if(temp<0)returnfalse;else{this.d[0]=(-b+Math.sqrt(temp))/(2*a);this.d[1]=(-b-Math.sqrt(temp))/(2*a);returntrue;}}}编程练习2定义一个FixedStack类,实现一个固定长度的整数堆栈。数据成员:intstck[]; intpos;方法:voidpush(intitem)和intpop()publicclasstestStack{publicstaticvoidmain(String[]args){intn=5;
FixedStackmystack1=newFixedStack(n);for(inti=0;i<n;i++)mystack1.push(i);System.out.print("Stackinmystack1:");for(inti=0;i<n;i++)System.out.print(mystack1.pop()+"");}}程序参考classFixedStack{ privateintstck[]; privateintpos;
publicFixedStack(intsize){stck=newint[size];pos=-1;}
publicintpop(){if(pos<0){ System.out.print("Stackisunderflow."); return0;} else returnstck[pos--];}
publicvoidpush(intitem){if(pos==stck.length-1) System.out.print("Stackisfull."); else
stck[++pos]=item;}}【Return】接口接口(interface)只是说明类应该做什么,但不指定应该如何去做.(类比USB接口)接口只有方法名没有方法体,这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能).Java接口不能有构造器(构造函数).Java可使用接口来实现多继承。示例学校接口学生类教师类测试类(主程序)教师对象学生对象setschoolname(String);setclassname(String);setname(String);getschoolname();getclassname();getname();接口方法实现方法实现接口实现接口接口的声明interfaceschool{voidsetschoolname(Stringschoolname);voidsetclassname(Stringschoolclassname);voidsetname(Stringname);Stringgetschoolname();Stringgetclassname();Stringgetname();}接口不一定要有方法,也可以全部是常量,甚至是没有任何方法和属性。接口的实现-student类classstudent
implementsschool{privateStringschoolname;privateStringclassname;
privateStringstudentname;publicvoidsetschoolname(Stringschoolname){this.schoolname=schoolname;}publicvoidsetclassname(Stringclassname){this.classname=classname;}
publicvoidsetname(Stringstudentname){this.studentname=studentname;}publicStringgetschoolname(){returnschoolname;}publicStringgetclassname(){returnclassname;}
publicStringgetname(){returnstudentname;}
publicStringtostring()//自己的方法{Stringinfor="学校名称:"+schoolname+""+"班级名称:"+ classname+""+"学生姓名:"+studentname;returninfor;}}实现school接口接口的实现-teacher类classteacher
implementsschool{privateStringschoolname;privateStringclassname;
privateStringteachername;publicvoidsetschoolname(Stringschoolname){this.schoolname=schoolname;}publicvoidsetclassname(Stringclassname){this.classname=classname;}
publicvoidsetname(Stringteachername){this.teachername=teachername;}publicStringgetschoolname(){returnschoolname;}publicStringgetclassname(){returnclassname;}publicStringgetname(){returnteachername;}
publicStringtostring()//自己的方法{Stringinfor="学校名称:"+schoolname+""+"班级名称:"+ classname+""+"教师姓名:"+teachername;returninfor;}}实现school接口测试类-主程序publicclassschooltest{publicstaticvoidmain(String[]args){studentst1=newstudent();teacherte1=newteacher();
st1.setschoolname("武汉科技大学");st1.setclassname("计算机二班");st1.setname("张三");
te1.setschoolname("武汉大学");te1.setclassname("软件一班");te1.setname("李四");System.out.println(st1.tostring());System.out.println(te1.tostring());}}接口的多重实现Java继承是单继承(子类只有一个直接父类);但是一个类可以实现一个接口,也可同时实现另一个接口。示例学校1接口学生类教师类setschoolname(String);setclassname(String);setname(String);测试类(主程序)教师对象学生对象接口方法实现方法学校2接口getschoolname();getclassname();getname();实现接口实现接口接口的声明interfaceschool1{voidsetschoolname(Stringschoolname);voidsetclassname(Stringschoolclassname);voidsetname(Stringname);}interfaceschool2{Stringgetschoolname();Stringgetclassname();Stringgetname();}接口的实现-student类classstudent
implements
school1,school2{privateStringschoolname;privateStringclassname;privateStringstudentname;publicvoidsetschoolname(Stringschoolname){this.schoolname=schoolname;}publicvoidsetclassname(Stringclassname){this.classname=classname;}publicvoidsetname(Stringstudentname){this.studentname=studentname;}publicStringgetschoolname(){returnschoolname;}publicStringgetclassname(){returnclassname;}publicStringgetname(){returnstudentname;}
publicStringtostring()//自己的方法{Stringinfor="学校名称:"+schoolname+""+"班级名称:"+ classname+""+"学生姓名:"+studentname;returninfor;}}实现school1接口实现school2接口接口的实现-teacher类classteacher
implements
school1,school2{privateStringschoolname;privateStringclassname;privateStringteachername;publicvoidsetschoolname(Stringschoolname){this.schoolname=schoolname;}publicvoidsetclassname(Stringclassname){this.classname=classname;}publicvoidsetname(Stringteachername){this.teachername=teachername;}publicStringgetschoolname(){returnschoolname;}publicStringgetclassname(){returnclassname;}publicStringgetname(){returnteachername;}
publicStringtostring()//自己的方法{Stringinfor="学校名称:"+schoolname+""+"班级名称:"+ classname+""+"教师姓名:"+teachername;returninfor;}}实现school1接口实现school2接口测试类-主程序(没有变换)publicclassschooltest{publicstaticvoidmain(String[]args){studentst1=newstudent();teacherte1=newteacher();st1.setschoolname("武汉科技大学");st1.setclassname("计算机二班");st1.setname("张三");te1.setschoolname("武汉大学");te1.setclassname("软件一班");te1.setname("李四");System.out.println(st1.tostring());System.out.println(te1.tostring());}}接口的继承学校2接口学生类教师类setschoolname(String);setclassname(String);setname(String);测试类(主程序)教师对象学生对象接口方法学校1接口getschoolname();getclassname();getname();继承接口实现接口实现接口实现方法接口的继承interfaceschool2{voidsetschoolname(Stringschoolname);voidsetclassname(Stringschoolclassname);voidsetname(Stringname);}interfaceschool1extendsschool2{Stringgetschoolname();Stringgetclassname();Stringgetname();}【Return】练习定义一个整形堆栈IntStac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六盘水职业技术学院《典型零件的工艺设计》2023-2024学年第一学期期末试卷
- 金肯职业技术学院《微机原理含实验》2023-2024学年第一学期期末试卷
- 新苏教版一年级下册数学第1单元第3课时《8、7加几》作业
- 怀化学院《影视创作前沿技术》2023-2024学年第一学期期末试卷
- 湖北理工学院《人力资源管理咨询与诊断》2023-2024学年第一学期期末试卷
- 资阳口腔职业学院《测试与传感器技术》2023-2024学年第一学期期末试卷
- 小学党员联系群众、服务群众制度
- 长沙学院《材料加工过程多尺度模拟》2023-2024学年第一学期期末试卷
- 寒露节气策划讲座模板
- 职业导论-房地产经纪人《职业导论》名师预测卷3
- 艺术品捐赠协议
- 网络安全系统运维方案
- 2024年标准沟渠回填工程承包协议版B版
- 2024年专用:物业安全管理协议3篇
- 【公开课】同一直线上二力的合成+课件+2024-2025学年+人教版(2024)初中物理八年级下册+
- 《政府采购业务培训》课件
- 《医疗器械召回管理办法》培训2024
- 网络安全培训内容课件
- 通信线路维护安全培训
- 专业微信小程序开发协议范例版
- 高职组全国职业院校技能大赛(婴幼儿照护赛项)备赛试题库(含答案)
评论
0/150
提交评论