JAVA语言面向对象基础实验.docx
- 文档编号:28875602
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:29
- 大小:738.44KB
JAVA语言面向对象基础实验.docx
《JAVA语言面向对象基础实验.docx》由会员分享,可在线阅读,更多相关《JAVA语言面向对象基础实验.docx(29页珍藏版)》请在冰豆网上搜索。
JAVA语言面向对象基础实验
成都大学实验报告
姓名
系别班级
学号
课程名称
指导教师
实验成绩
实验日期
软件工程6班
JAVA程序设计基础
郑加林
2011/04/25
实验项目名称JAVA语言面向对象基础
一、实验目的:
1、编写一个体现面向对象思想的程序;
2、编写一个创建对象和使用对象的方法的程序;
3、编写一个显示当前日期和时间的程序;
4、编写不同成员变量修饰方法的程序;
5、编写不同成员方法修饰方法的程序;
6、编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序;
7、编写体现类的多态性(成员方法重载、构造方法重载)的程序;
8、编写体现接口功能的程序。
二、实验内容(包括源程序及相关说明):
1、设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。
以下为源代码:
classCarinfo{
Stringname;
doublespeed;
intview;
publicCarinfo(Stringn,doubles,intv)
{
name=n;
speed=s;
view=v;
}
voidchangespeed(doubles)
{
speed=s;
System.out.println("汽车速度改变为:
"+speed+"km/h");
}
voidstop()
{
speed=0;
System.out.println("汽车已停止");
}
}
publicclassEXP3_1{
publicstaticvoidmain(String[]args){
Carinfocar=newCarinfo("Tom",40,20);
System.out.println("车主姓名:
"+car.name);
System.out.println("前的速率:
"+car.speed+"km/h");
System.out.println("方向盘的转向角度:
"+car.view+"°");
car.changespeed(60);
car.stop();
}
}
2、创建类EXP3_1的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。
源代码如下
classbox{
intA;
doubleB;
publicbox(inta,doubleb)
{
A=a;
B=b;
System.out.println("A的初始值是:
"+A);
System.out.println("B的初始值是:
"+B);
}
voidchange(inta,doubleb)
{
A=a;
B=b;
System.out.println("A的当前值是:
"+A);
System.out.println("B的当前值是:
"+B);
}
}
publicclassEXP3_1{
publicstaticvoidmain(String[]args)
{
boxa=newbox(1,2.5);
a.change(2,5.5);
}
}
3、编写一个显示当前时间和日期的程序。
源代码如下
importjava.util.Calendar;
classTime{
privateCalendart;
privateinty,m,d,hh,mm,ss;
Time()
{
t=Calendar.getInstance();
y=t.get(t.YEAR);
m=t.get(t.MONTH)+1;
d=t.get(t.DATE);
hh=t.get(t.HOUR_OF_DAY);
mm=t.get(t.MINUTE);
ss=t.get(t.SECOND);
}
publicStringgetDate()
{
returny+"年"+m+"月"+d+"日";
}
publicStringgetTime()
{
returnhh+"时"+mm+"分"+ss+"秒";
}
}
publicclassexample{
publicstaticvoidmain(String[]args)
{
Timet=newTime();
System.out.println("当前日期:
"+t.getDate());
System.out.println("当前时间:
"+t.getTime());
}
}
4、使用修饰符来限定类的成员变量或成员方法的属性。
源代码如下:
classStaticDemo{
staticintx;
inty;
publicstaticintgetX(){
returnx;
}
publicstaticvoidsetX(intnewX){
x=newX;
}
publicintgetY(){
returny;
}
publicvoidsetY(intnewY){
y=newY;
}
}
publicclassEXP3_1{
publicstaticvoidmain(String[]args){
System.out.println("静态变量x="+StaticDemo.getX());
//System.out.println("实例变量y="+StaticDemo.getY());//运行时出错
StaticDemoa=newStaticDemo();
StaticDemob=newStaticDemo();
a.setX
(1);
a.setY
(2);
b.setX(3);
b.setY(4);
System.out.println("静态变量a.x="+a.getX());
System.out.println("实例变量a.y="+a.getY());
System.out.println("静态变量b.x="+b.getX());
System.out.println("实例变量b.y="+b.getY());
}
}
5、程序首先给整型变量x和y赋一个初值10,然后使用传值调用方式调用方法ff1对x和y做乘方及输出x和y的乘方值,最后再输出x和y的值。
源代码如下:
publicclassEXP3_1{
publicstaticvoidmain(String[]args)
{
intx=10,y=10;
ffl(x,y);
System.out.println("x="+x+",y="+y);
}
staticvoidffl(intpassX,intpassY){
passX=passX*passX;
passY=passY*passY;
System.out.println("passX"+passX+",passY"+passY);
}
}
6、通过调用对象的方法在方法调用后修改了成员变量的值。
源代码如下:
publicclassExp3_1{
publicstaticvoidmain(String[]args){
Powerp=newPower();
p.ff2(10,10);
System.out.println("方法调用后x="+p.x+",y="+p.y);
}
}
classPower{
intx=10,y=10;
voidff2(intpassX,intpassY){
System.out.println("初始时x="+x+",y="+y);
x=passX*passY;
y=passY*passY;
System.out.println("初始时x="+x+",y="+y);
}
}
7、创建将被继承的类。
通过EXP3_7类产生子类EXP3_8,其不仅具有父类的成员变量xm(姓名)、xh(学号),还定义了新成员变量xy(学院)、xi(系)。
在程序中调用了父类的print方法,同时可以看出子类也具有该方法。
源代码如下:
classEXP3_7{
protectedStringxm;
protectedintxh;
voidsetdate(Stringm,inth){
xm=m;
xh=h;
}
publicvoidprint(){
System.out.println(xm+","+xh);
}
}
publicclassEXP3_8extendsEXP3_7{
protectedStringxy;
protectedStringxi;
publicstaticvoidmain(String[]args){
EXP3_7p1=newEXP3_7();
p1.setdate("李四",12321);
p1.print();
EXP3_8s1=newEXP3_8();
s1.setdate("张三",12345);
s1.xy="成都大学";
s1.xi="计算机系";
s1.print();
System.out.println(s1.xm+","+s1.xy+","+s1.xi);
}
}
8、了解成员方法的覆盖方式。
源代码如下:
classCircle{
privateintradius;
Circle(intr){
setRadius(r);
}
publicvoidsetRadius(intr){
radius=r;
}
publicintgetRadius(){
returnradius;
}
publicdoublearea(){
return3.14159*radius*radius;
}
publicStringtoString(){
return"圆半径:
"+getRadius()+"圆面积:
"+area();
}
}
publicclassEXP3_9{
publicstaticvoidmain(String[]args){
Circlec=newCircle(10);
System.out.println("\n"+c.toString());
}
}
9、说明this、super和super()的用法。
程序首先定义Point(点)类,然后创建点的子类Line(线)。
最后通过LX3_10类输出线段的长度。
程序中通过super(a,b)调用父类Point的构造方法为父类的x和y赋值。
在子类Line的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this引用,告诉编译器是为当前类的成员变量赋值。
在length和toString方法中使用父类成员变量时,使用super引用,告诉编译器使用的是父类的成员变量。
源代码如下:
classPoint{
protectedintx,y;
Point(inta,intb){
setPoint(a,b);
}
publicvoidsetPoint(inta,intb){
x=a;
y=b;
}
}
classLineextendsPoint{
protectedintx,y;
Line(inta,intb){
super(a,b);
setLine(a,b);
}
publicvoidsetLine(intx,inty)
{
this.x=x+x;
this.y=y+y;
}
publicdoublelength(){
intx1=super.x,y1=super.y,x2=this.x,y2=this.y;
returnMath.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
publicStringtoString(){
return"直线端点:
["+super.x+","+super.y+"]["+x+","+y+"]直线长度:
"+this.length();
}
}
publicclassEXP3_10{
publicstaticvoidmain(String[]args){
Lineline=newLine(50,50);
System.out.println("\n"+line.toString());
}
}
10、使用同名方法对两个、三个或用数组容纳的一组数进行排序。
源代码如下:
classIntSort{
publicStringsort(inta,intb){
if(a>b)
returna+""+b;
else
returnb+""+a;
}
publicStringsort(inta,intb,intc){
intswap;
if(a
swap=a;
a=b;
b=swap;
}
if(a swap=a; a=c; c=swap; } if(b swap=b; b=c; c=swap; } returna+""+b+""+c; } publicStringsort(intarr[]){ Strings=""; intswap; for(inti=0;i for(intj=0;j if(arr[j]>arr[j+1]){ swap=arr[j]; arr[j]=arr[j+1]; arr[j+1]=swap; } for(inti=0;i s=s+arr[i]+""; returns; } } publicclassEXP3_11{ publicstaticvoidmain(String[]args){ IntSorts=newIntSort(); intarr[]={2,5,4,3,0}; System.out.println("两数由大到小: "+s.sort(4,5)); System.out.println("三数由大到小: "+s.sort(4,7,5)); System.out.println("数组由小到大: "+s.sort(arr)); } } 11、构造函数的重载。 源代码如下: classRunDemo{ privateStringuserName,password; RunDemo(){ System.out.println("全部为空! "); } RunDemo(Stringname){ userName=name; } RunDemo(Stringname,Stringpwd){ this(name); password=pwd; check(); } voidcheck(){ Strings=null; if(userName! =null) s="用户名: "+userName; else s="用户名不能为空! "; if(password! ="12345678") s=s+"口令无效! "; else s=s+"口令: ********"; System.out.println(s); } } publicclassEXP3_12{ publicstaticvoidmain(String[]args){ newRunDemo(); newRunDemo("张三"); newRunDemo(null,"李四"); newRunDemo("王五","12345678"); } } 12、接口技术,源代码如下: interfaceNL{ intyear=2004; intage(); voidoutput(); } publicclassEXP3_13implementsNL{ Stringxm; intcsrq; publicEXP3_13(Stringn1,inty){ xm=n1; csrq=y; } publicintage(){ returnyear-csrq; } publicvoidoutput(){ System.out.println(this.xm+"今年的年龄是"+this.age()+"岁"); } publicstaticvoidmain(String[]args){ NLa=newEXP3_13("张三",1990); a.output(); } } 三、实验结果: 实验一 实验二: 实验三: 实验四: 实验五: 实验六: 实验七: 实验八: 实验九: 实验十: 实验十一: 实验十二: 四、实验小结与建议: 1、初步了解面向对象思想; 2、了解不同成员变量修饰方法; 3、了解类的继承性(成员变量、成员方法、成员变量隐藏); 4、了解类的多态性(成员方法重载、构造方法重载); 成都大学信息科学与技术学院制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 语言 面向 对象 基础 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)