java接口与实现接口的类实验报告.docx
《java接口与实现接口的类实验报告.docx》由会员分享,可在线阅读,更多相关《java接口与实现接口的类实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
![java接口与实现接口的类实验报告.docx](https://file1.bdocx.com/fileroot1/2023-7/2/e5c4de8a-a612-47d1-9111-e227617b4d72/e5c4de8a-a612-47d1-9111-e227617b4d721.gif)
java接口与实现接口的类实验报告
实验报告
课程名称
面向对象程序设计
实验名称
实验六、接口与实现接口的类
日期
2018/4/29
学生学号
姓名
班级
实验目的:
通过本次实验,要求学生能进一步掌握接口、java.lang包中的基础类库和
java.util包中的工具类库的使用方法。
实验条件:
电脑一台、能上网查阅资料。
1.定义Person类,包含name(姓名)、birthday(出生日期)、idCard(身份证
号)、sex(性别)、age(年龄)等基本信息,通过使用Comparator接口实验
Person类可以按姓名、年龄、出生日期等多种比较规则进行排序。
源代码:
packageperson;
public
class
Person{
String
name;
String
idCard
;
String
birthday
;
char
sex;
int
age;
public
Person(){
}
public
Person(String
name,String
idCard,String
birthday,charsex,intage){
super
();
this
.name=
name;
this
.idCard
=idCard;
this
.birthday
=
birthday;
this
.sex
=
sex;
this
.age
=
age;
}
精选文库
}
packageperson;
importjava.util.Comparator;
publicclassCompareNameimplementsComparator{
@Override
publicintcompare(Personp1,Personp2){
//TODO自动生成的方法存根
returnp1.pareTo(p2.name);
}
}
packageperson;
importjava.util.Comparator;
publicclassCompareBirthdayimplementsComparator{
@Override
publicintcompare(Personp1,Personp2){
//TODO自动生成的方法存根
returnp1.birthday.compareTo(p2.birthday);
}
}
packageperson;
importjava.util.Comparator;
publicclassCompareAgeimplementsComparator{
@SuppressWarnings("deprecation")
@Override
publicintcompare(Personp1,Personp2){
//TODO自动生成的方法存根
returnnewInteger(p1.age).compareTo(newInteger(p2.age));
—2
精选文库
}
}
packageperson;
importjava.util.Arrays;
publicclassPersonText{
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
intn=5;
Person[]
person=newPerson[
n];
person
[0]=
newPerson(
"张三",
"4569"
"1996
年6月6日",
'男',22);
person
[1]=
newPerson(
"李四",
"1234"
"1995
年4月3日",
'男',23);
person
[2]=
newPerson(
"王五",
"2589"
"1997
年3月5日",
'男',21);
person
[3]=
newPerson(
"赵丽",
"3698"
"1998
年2月5日",
'女',20);
person
[4]=
newPerson(
"宋月",
"5869"
"1998
年1月1日",
'女',20);
System.
out.println(
"原来顺序为:
");
for
(int
i=0;iSystem.out
.println(
"姓名:
"
+person
[i].name+"
性别:
"
+person
[i].sex+"
年
龄:
"
+person
[i].
age+"
生日:
"
+person[i].
birthday
);
}
System.
out.println(
"\n
按姓名排序后顺序为
:
"
);
Arrays.
sort(person
newCompareName());
for
(int
i=0;iSystem.out
.println(
"姓名:
"
+person
[i].
name+"
性别:
"
+person
[i].
sex+"
年
龄:
"
+person
[i].
age+"
生日:
"
+person[i].
birthday
);
}
System.
out.println(
"\n
按年龄排序后顺序为
:
"
);
Arrays.
sort(person
newCompareAge());
for
(int
i=0;iSystem.out
.println(
"姓名:
"
+person
[i].
name+"
性别:
"
+person
[i].
sex+"
年
龄:
"
+person
[i].
age+"
生日:
"
+person[i].
birthday
);
}
System.
out.println(
"\n
按生日排序后顺序为
:
"
);
Arrays.
sort(person
newCompareBirthday());
for
(int
i=0;iSystem.out
.println(
"姓名:
"
+person
[i].
name+"
性别:
"
+person
[i].
sex+"
年
龄:
"
+person
[i].
age+"
生日:
"
+person[i].
birthday
);
—3
精选文库
}
}
}
实验结果:
2.首先定义基本几何图形接口(
IShape),然后定义IShape的实现类Circle(
圆
形)、Square(正方形)和Triangle(
三角形)。
要求计算各种图形的面积和周长。
(提示:
求三角形的面积用海伦公式:
SL*(L
a)*(Lb)*(Lc),其中a,b,c
是三角形的边长,L=(a+b+c)/2
,即周长的一半。
)
源代码:
packagejiekoushape;
—4
精选文库
publicinterfaceIShape{
publicdoublearea();
publicdoublelength();
}
packagejiekoushape;
publicclassCircleimplementsIShape{
privateStringname;
privatedoubler;
publicCircle(Stringname,doubler){
super();
this.name=name;
this.r=r;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicdoublegetR(){
returnr;
}
publicvoidsetR(doubler){
this.r=r;
}
—5
精选文库
@Override
publicdoublearea(){
//TODO自动生成的方法存根
returnMath.PI*Math.pow(r,2);
}
@Override
publicdoublelength(){
//TODO自动生成的方法存根
returnMath.PI*r*2;
}
@Override
publicStringtoString(){
//TODO自动生成的方法存根
returnname+"周长是:
"+length()+","+"面积是:
"+area();
}
}
packagejiekoushape;
publicclassSquareimplementsIShape{
privateStringname;
privatedoublea;
publicSquare(Stringname,doublea){
super();
this.name=name;
this.a=a;
}
—6
a*a;
精选文库
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicdoublegetA(){
returna;
}
publicvoidsetA(doublea){
this.a=a;
}
@Override
publicdoublearea(){
//TODO自动生成的方法存根
return
}
@Override
publicdoublelength(){
//TODO自动生成的方法存根
return4*a;
}
@Override
—7
精选文库
publicStringtoString(){
//TODO自动生成的方法存根
returnname+"周长是:
"+length()+","+"面积是:
"+area();
}
}
packagejiekoushape;
publicclassTriangleimplementsIShape{
privateStringname;
privatedoublea;
privatedoubleb;
privatedoublec;
public
Triangle(String
name,doublea,doubleb,doublec){
super();
this
.name=name;
this
.a=
a;
this
.b=
b;
this
.c=
c;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicdoublegetA(){
returna;
}
—8
精选文库
publicvoidsetA(doublea){
this.a=a;
}
publicdoublegetB(){
returnb;
}
publicvoidsetB(doubleb){
this.b=b;
}
publicdoublegetC(){
returnc;
}
publicvoidsetC(doublec){
this.c=c;
}
publicdoublearea(){
//TODOAuto-generatedmethodstub
doublel=(a+b+c)/2;
returnMath.sqrt(l*(l-a)*(l-b)*(l-c));
}
publicdoublelength(){
//TODOAuto-generatedmethodstub
returna+b+c;
}
—9
精选文库
@Override
publicStringtoString(){
//TODO自动生成的方法存根
returnname+"周长是:
"+length()+","+"面积是:
"+area();
}
}
packagejiekoushape;
publicclassDemoIShape{
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
IShape
shape=null
;
shape=newCircle(
"圆形",3);
System.
out.println(
shape
.toString());
shape=newSquare(
"正方形",4);
System.
out.println(
shape
.toString());
shape=newTriangle(
"三角形",3,4,5);
System.
out.println(
shape
.toString());
}
}
—10
精选文库
实验结果:
实验总结(结论或问题分析):
本次实验,主要是对接口、java.lang包中的基础类库和java.util包中的工具
类库的使用,其中最难得就是使用Comparator对Person类进行排序,通过
查阅资料了解了Comparator如何使用,受益匪浅。
实验成绩任课教师签名
—11