Java语言程序设计.docx
- 文档编号:9189346
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:14
- 大小:76.57KB
Java语言程序设计.docx
《Java语言程序设计.docx》由会员分享,可在线阅读,更多相关《Java语言程序设计.docx(14页珍藏版)》请在冰点文库上搜索。
Java语言程序设计
《Java语言程序设计》
上机实验报告(6)
实验名称:
Java面向对象编程(3)
班级:
软件101
姓名:
许小军
学号:
110029025
上机时间:
指导教师:
王华
实验六Java面向对象编程(3)
实验【目的】
1理解构造函数的继承与重载。
2抽象类和接口的使用。
3包的定义与使用。
4综合运用所学知识编写程序。
实验内容:
1.构造函数的继承与重载。
(1)首先预测下列程序的运行结果,然后编译、执行以验证你的预测:
publicclassJLab0503{
publicstaticvoidmain(Stringargs[]){
System.out.println("创建父类对象:
");
SuperClasssc0=newSuperClass();
System.out.println("\n创建第一个子类对象:
");
SubClasssc1=newSubClass();
System.out.println("\n创建第二个子类对象:
");
SubClasssc2=newSubClass
(1);
}
}
classSuperClass{
SuperClass(){
System.out.println("父类的构造函数");
}
}
classSubClassextendsSuperClass{
SubClass(){
System.out.println("子类的第一个构造函数");
}
SubClass(inti){
System.out.println("子类的第二个构造函数");
}
}
运行结果:
(2)去掉SubClass的所有构造函数,然后将JLab0503类中main方法的最后两行语句删除。
预测修改后程序的运行结果,并进行验证。
代码:
packagexuxiaojun;
publicclassJLab0503{
publicstaticvoidmain(Stringargs[]){
System.out.println("创建父类对象:
");
SuperClasssc0=newSuperClass();
System.out.println("\n创建第一个子类对象:
");
SubClasssc1=newSubClass();
}
}
classSuperClass{
SuperClass(){
System.out.println("父类的构造函数");
}
}
classSubClassextendsSuperClass{
}
运行结果:
2.抽象类与接口。
(1)试改写实验指导手册(5)中第3题的Pet类,其中move与speak方法定义为抽象方法。
定义一个Pet类的子类Cat类。
在Cat类中实现move和Speak方法。
其中move方法返回值为“run”,speak方法返回值为“miaomiao”。
(2)编写含有主方法的公共类JLab0504A,在其主方法中创建一个名为myCat的Cat的实例。
并依照实验指导手册(5)中的类JLab0501主方法中的相应格式输出结果。
代码:
packagexuxiaojun;
abstractclassPet{
protectedStringname;
publicPet(Stringn){
name=n;
}
publicStringgetName(){
returnname;
}
publicStringtoString(){
return"Mypet"+name;
}
abstractStringmove();
abstractStringspeak();
}
classCatextendsPet{
publicCat(Stringn){
super(n);
}
Stringmove(){
return"run";
}
Stringspeak(){
return"miao,miao";
}
}
publicclassJLab0504A{
publicstaticvoidmain(String[]args){
CatmyCat=newCat("Kitty");
System.out.println(myCat.toString()+"\n"+"Speak:
"+
myCat.speak()+"\n"+myCat.move()+""+
myCat.getName()+"\n");
}
}
运行结果:
(2)如果将Pet定义为接口,即所有相应方法全部为抽象方法,则Cat类该如何改动?
试改写相关代码,并验证你的结果。
代码:
packagexuxiaojun;
interfacePet1{
finalStringname="HelloKitty";
publicabstractStringgetName();
publicabstractStringmove();
publicabstractStringspeak();
publicabstractStringtoString();
}
classCat1implementsPet1{
publicStringgetName(){
returnname;
}
publicStringmove(){
return"run";
}
publicStringspeak(){
return"miao,miao";
}
publicStringtoString(){
return"Mypet"+name;
}
}
publicclassJLab0504A2{
publicstaticvoidmain(String[]args){
Cat1myCat=newCat1();
System.out.println(myCat.toString()+"\n"+"Speak:
"+
myCat.speak()+"\n"+myCat.move()+""+
myCat.getName()+"\n");
}
}
运行结果:
3.包的定义和使用。
A.
(1)在C:
\javalab目录下新建目录mypg;使用记事本程序编辑下列程序并将其保C:
\javalab\mypg\MyPackage.java
packagemypg;
publicclassMyPackage{
publicMyPackage(){
System.out.println("createMyPackageobject");
}
}
(2)编辑下列代码,并将其保存为C:
\javalab\JLab0505.java
publicclassJLab0505{
publicstaticvoidmain(String[]args){
MyPackagempg=newMyPackage();
}
}
(3)分别编译上述两个java源程序,并执行JLab0505。
观察相应结果。
(4)试将C:
\javalab\mypg\MyPackage.class文件移动(剪切、粘贴)到C:
\javalab\目录下。
再次运行JLab0505,观察结果并思考原因。
原因:
两个类不在同一个包中,不能直接访问。
B.在存放源程序的文件夹中建立一个子文件夹Mypackage。
例如,在“E:
\java\程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E:
\java\程序\Mypackage),并将编译过的class文件放入该文件夹中。
注意:
包名与文件夹名大小写要一致。
(1)在包中创建类---YMD.java。
程序功能:
在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份,可以输出一个带有年月日的字符串的功能。
(2)编写使用包Mypackage中YMD类的程序。
程序功能:
给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。
源代码:
packageMyPackage;//声明存放类的包
importjava.util.*;
publicclassYMD{
privateintyear,month,day;
publicstaticvoidmain(String[]arg3){}
publicYMD(inty,intm,intd){
year=y;
month=(((m>=1)&(m<=12))?
m:
1);
day=(((d>=1)&(d<=31))?
d:
1);
}
publicYMD(){
this(0,0,0);
}
publicstaticintthisyear(){
returnCalendar.getInstance().get(Calendar.YEAR);//返回当年的年份
}
publicintyear(){
returnyear;//返回年份
}
publicStringtoString(){
returnyear+"-"+month+"-"+day;//返回转化为字符串的年-月-日
}
}
importMyPackage.YMD;//引用Mypackage包中的KY4_1_YMD类
publicclassKY4_2
{
privateStringname;
privateYMDbirth;
publicstaticvoidmain(Stringargs[])
{
KY4_2a=newKY4_2("许小军",1988,9,29);
a.output();
}
publicKY4_2(Stringn1,YMDd1)
{
name=n1;
birth=d1;
}
publicKY4_2(Stringn1,inty,intm,intd)
{
this(n1,newYMD(y,m,d));//初始化变量与对象
}
publicintage()//计算年龄
{
returnYMD.thisyear()-birth.year();//返回当前年与出生年的差即年龄
}
publicvoidoutput()
{
System.out.println("姓名:
"+name);
System.out.println("出生日期:
"+birth.toString());
System.out.println("今年年龄:
"+age());
}
}
运行结果:
4.综合实验。
定义抽象类Shape表示一般二维图形。
Shape具有抽象方法area和perimeter
分别计算形状的面积和周长。
试定义一些二维形状类(如矩形、三角形、圆形、椭圆形等),这些类均为Shape类的子类。
完成相关类的定义后,定义含有main方法的类JLab0506来使用这些类的相应对象,输出相关信息:
如对象所代表图形形状、基本数据(半径、长宽高等等)以及面积、周长等计算值。
源代码:
packagexuxiaojun;
abstractclassShape{
abstractdoublearea();
abstractdoubleperimeter();
}
classRectangleextendsJLab05061{
publicdoublewidth,length;
Rectangle(doublelength,doublewidth){
this.length=length;
this.width=width;
}
doublearea(){
returnwidth*length;
}
doubleperimeter(){
return2*length*width;
}
}
classTriangleextendsJLab05061{
publicdoublea,b,c;
publicdoubles;
Triangle(doublea,doubleb,doublec){
this.a=a;
this.b=b;
this.c=c;
s=(a+b+c)/2;
}
doublearea(){
returnMath.sqrt(s*(s-a)*(s-b)*(s-c));
}
doubleperimeter(){
returna+b+c;
}
}
classCircleextendsJLab05061{
publicdoubleradius;
Circle(doubleradius){
this.radius=radius;
}
doublearea(){
returnMath.PI*radius*radius;
}
doubleperimeter(){
return2*Math.PI*radius;
}
}
publicclassJLab05061{
publicstaticvoidmain(String[]args){
Rectanglerec=newRectangle(10,20);
System.out.println("矩形的长:
"+rec.length+"矩形的宽:
"+rec.width);
System.out.println("矩形的周长:
"+rec.perimeter()+"矩形的面积:
"+rec.area());
Triangletri=newTriangle(3,4,5);
System.out.println("三角形的三边长分别为:
"+tri.a+""+tri.b+""+tri.c);
System.out.println("三角形的周长:
"+tri.perimeter()+"三角形的面积:
"+tri.area());
Circlecir=newCircle(6);
System.out.println("圆形的半径:
"+cir.radius);
System.out.println("圆的周长:
"+cir.perimeter()+"圆的面积:
"+cir.area());
}
}
运行结果:
总结:
不同包中的类要调用另外一个包中的类,应该将另一个包导入。
接口中的方法都是publicabstract类型的,变量只是final类型的,而抽象类中可以有非抽象的方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言程序设计
文档标签
- Python语言程序设计3语言程序设计
- Java语言程序设计Java语言程序设计实验
- 语言程序设计讲稿
- Java语言设计春北交Java语言
- Java语言程序设计Java语言程序设计教案
- java程序语言课程设计
- JAVA语言程序设计JAVA语言程序设计练习题
- Java语言程序设计教案
- JAVA语言程序设计课程标准
- Java语言课程设计Java语言课程设计
- Java语言程序设计Java语言程序设计考试
- JAVA语言程序设计JAVA语言程序设计期末考试
- 语言程序设计
- 语言程序设计医院
- JAVA语言程序设计
- Python语言程序设计
- 二级Python语言程序
- Python设计
- Python程序设计Python程序设计试试
- Python程序设计
- Python语言程序设计
- Python程序的设计Python程序设计
- Python语言程序设计
- Python语言程序设计