学号姓名Java语言实验报告二.docx
《学号姓名Java语言实验报告二.docx》由会员分享,可在线阅读,更多相关《学号姓名Java语言实验报告二.docx(13页珍藏版)》请在冰豆网上搜索。
学号姓名Java语言实验报告二
《Java语言与面向对象程序设计基础》课程
实验报告二
姓名:
xxx
学号:
2009711008xxxx
实验题1
[实验要求]
给以下程序添加输出语句,以显示各种参数值及其传递关系
画出参数传递的内存图
[实验程序]
publicclassEx2_1{
publicstaticvoidmain(String[]args)
{
MyDatem1=newMyDate(1,9,1966);
MyDatem2=m1.addDays(7);
m2.print();
}
}
源文件:
MyDate.java
publicclassMyDate{
privateintday=1;
privateintmonth=1;
privateintyear=2000;
publicvoidprint(){
System.out.println(day+"-"+month+"-"+year);
}
publicMyDate(intday,intmonth,intyear){
this.day=day;
this.month=month;
this.year=year;
}
publicMyDate(MyDatedate){
this.day=date.day;
this.month=date.month;
this.year=date.year;
}
publicMyDateaddDays(intdate){
MyDaten=newMyDate(this);
n.day=n.day+date;
returnn;
}
}
[运行结果]
[实验结论与收获]
了解了什么是类、类基本格式,对象以及构造方法
实验题2
[实验要求]
修改程序,使得在子类中可以对两个f分别进行赋值和显示操作
记录调试过程、步骤、程序和运行结果
[实验程序]
classParent{
publicintf;
publicvoidsetF(inta){f=a;}
publicintgetF(){returnf;}
}
publicclassChildextendsParent{
publicintf;
publicdoubled;
publicstaticvoidmain(String[]args){
Childc=newChild();
c.f=100;
c.setF(30);
System.out.println("Parent:
"+c.getF());
System.out.println("Child:
"+c.f);
}
}
[运行结果]
[实验结论与收获]
学会修改程序,分别对F进行赋值和显示操作
实验题3
[实验要求]
完成程序,使用super创建重写的方法
调试并记录结果
[实验程序]
publicclassEmployee{
publicStringname="zhang";
publicdoublesalary=2000;
publicStringgetDetails(){
return"Name:
"+name+"\n"+"Salary:
"+salary;
}
}
publicclassManagerextendsEmployee{
publicStringdepartment="Office";
publicStringgetDetails(){
returnsuper.getDetails()+"\n"+"Department:
"+department;
}
}
publicclassEx2_3{
publicstaticvoidmain(Stringargs[]){
Employeee=newEmployee();
Managerm=newManager();
System.out.println("Employee:
"+"\n"+e.getDetails());
System.out.println("Manager:
"+"\n"+m.getDetails());
}
}
[运行结果]
[实验结论与收获]
学会super的创建使用方法
实验题4
[实验要求]
修改并完成程序
说明程序错在哪里,如何修改
调试并记录结果
[实验程序]
classParent{
publicvoiddoSomething(){}
}
classChildextendsParent{
publicvoiddoSomething(){}
}
publicclassEx2_4{
publicstaticvoidmain(Stringargs[]){
Parentp1=newParent();
Parentp2=newChild();
p1.doSomething();
p2.doSomething();
}
}
[运行结果]
[实验结论与收获]
错误出在privatevoiddoSomething(){}修改正确的publicvoiddoSomething(){}
调试语句publicstaticvoidmain(Stringargs[]){
实验题5
[实验要求]
执行程序记录程序结果
[实验程序]
classCount{
publicstaticintcounter;
static{
counter=100;
System.out.println("instaticblock!
");
}
}
publicclassEx2_5{
publicstaticvoidmain(String[]args){
System.out.println("counter="+Count.counter);
}
}
[运行结果]
[实验结论与收获]
执行程序得到正确结果
实验题6
[实验要求]
将程序1Parent类和程序2Child类存于同一包(目录)中,并调试程序,记录结果。
将程序1Parent类存于当前包的子包parent中,程序2Child类存于当前包中,并调试程序,记录结果。
比较以上两题结果的不同。
[实验程序]
classParent{
privateintf1=1;
intf2=2;
protectedintf3=3;
publicintf4=4;
privatevoidfm1(){
System.out.println("infm1()f1="+f1);}
voidfm2(){
System.out.println("infm2()f2="+f2);}
protectedvoidfm3(){
System.out.println("infm3()f3="+f3);}
publicvoidfm4(){
System.out.println("infm4()f4="+f4);}
}
classChildextendsParent{
privateintc1=21;
publicintc2=22;
privatevoidcm1(){
System.out.println("incm1()c1="+c1);}
publicvoidcm2(){
System.out.println("incm2()c2="+c2);}
publicstaticvoidmain(Stringargs[]){
inti;
Parentp=newParent();
i=p.f1;i=p.f2;i=p.f3;i=p.f4;
p.fm1();p.fm2();p.fm3();p.fm4();
Childc=newChild();
i=c.f1;i=c.f2;i=c.f3;i=c.f4;
c.fm1();c.fm2();c.fm3();c.fm4();
i=c.c1;i=c.c2;
c.cm1();c.cm2();
}
}
[运行结果]
同一包
不同包
通过运行结果可以看出:
1、不管是否在同一包中,子类永远不能访问父类的private方法。
2、同一包中,父类与子类都可以访问default方法、protected方法及public方法
3、在不同包中创建的父类对象,不能访问父类的default方法、protected方法、private方法
4、在不同包中创建的子类对象,通过继承,可以访问父类中的protected方法。
[实验结论与收获]
掌握了不同包之间,各种方法的访问权限。