实验报告 课程名称: Java程序设计 成绩评定: 实验项目名称:实验5:类构造函数与继承 指导教师: 学生姓名: 学号: 专业班级: 实验项目类型: 基础 实验地点: 验时间:
一、实验目的与要求:
1、理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的
方法和属性,进一步掌握方法调用时参数的传递;
2、掌握package、jar打包功能与应用; 4、掌握类的继承,理解继承中的覆盖现象. 二、实验内容:
1、按照要求完成程序 public class Test{
public static void main(String args[]){ System.out.println(\创建父类对象:\SuperClass sc0 = new SuperClass();
System.out.println(\创建第一个子类对象:\SubClass sc1 = new SubClass();
System.out.println(\创建第二个子类对象:\SubClass sc2 = new SubClass(1); } }
class SuperClass{ SuperClass( ){
System.out.println(\父类的构造函数\} }
class SubClass extends SuperClass{ SubClass( ){
System.out.println(\子类的第一个构造函数\}
SubClass(int i){
System.out.println(\子类的第二个构造函数\} }
要求:1)运行程序写出结果; 创建父类对象: 父类的构造函数
创建第一个子类对象: 父类的构造函数
1
子类的第一个构造函数
创建第二个子类对象: 父类的构造函数
子类的第二个构造函数
2)去掉SubClass的所有构造函数,然后将Test类中main方法的最
后两行语句删除。预测修改后程序的运行结果,并进行验证。
创建父类对象: 父类的构造函数
创建第一个子类对象: 父类的构造函数 2、 首先预测下列程序的运行结果,然后编译、执行以验证你的预测: class Pet{
protected String name; public Pet(String n){ name = n;}
public String getName(){ return name;}
public String move(){ return \
public String speak(){ return \
public String toString(){ return \class Dog extends Pet{
protected int weight; public Dog(String s){
super(s);}}
public class PetTest{
public static void main(String[] args){
Pet myPet = new Pet(\Dog myDog = new Dog(\
System.out.println(myPet.toString() + \
myPet.speak() +\myPet.getName() + \
System.out.println(myDog.toString() + \
myDog.speak() +\+myDog.getName() + \
输出:
My pet George Speak: run George
2
My pet Spot Speak: run Spot
1) 修改Dog类的构造函数,使之可以初始化Dog类中的weight值。 class Dog extends Pet{ protected int weight;
public Dog(String s,int weight){ super(s);
this.weight=weight; }
Dog myDog = new Dog(\输出:
My pet George Speak: run George
My pet Spot Speak: run Spot
2) 在Dog类中添加方法getWeight以获 得其weight值。 public int getWeight(){ return this.weight; } 输出:
My pet George Speak: run George
My pet Spot Speak: run Spot
3) 修改类PetTest,使用新的构造函数创建一个名为“snoopy”,重为10 的Dog类的对象,并利用其方法输出包括重量在内的各项值。 代码:Dog snoopy = new Dog(\
System.out.println(snoopy.toString() + \+\它的重量是:\
4) 要使Dog类对象的speak()方法返回值为“Woof Woof”,应如何做?修改(1)中程序,并验证你的做法。
代码:public Dog(String s,int weight,String speak){ super(s);
this.weight=weight;
3
this.speak=speak;} 3、 按照要求完成程序:
1) 第一个类是图形类(Shape),含有一个成员变量color(字符串类型),一
个没有参数的构造方法,以及一个有一个字符串类型参数的构造方法来初始化颜色变量,还有一个返回颜色变量值的成员方法show,以及一个抽象方法getArea获取面积,返回值为double类型;
2) 第二个类是圆形类(Circle)继承自图形类,含有一个成员变量半径r,有
一个有两个参数的构造方法,来初始化颜色和半径,一个方法getArea,返回值为double,获取圆的面积值。
3) 第三个类是矩形类(Rectangle)继承自图形,含有两个double类型的成员
变量长a和宽b,有一个有三个参数的构造方法,来初始化颜色、长和宽,一个方法getArea,返回值为double,获取矩形的面积值。 4) 第四个类是测试类(TestShape),分别定义圆形类和矩形类的实例对象,
并用show方法,getArea方法来测试自己的定义
abstract class Shape{ String color; public Shape (){ }
public Shape(String color){ super();
this.color=color;}
public String showColor(){ return color; }
public abstract double getArea(); }
class Circle extends Shape{ private int r;
public Circle(String color,int r){ super();
this.color=color; this.r=r;}
public double getArea(){ return 3.14*r*r;} }
class Rectangle extends Shape{ private double a; private double b;
public Rectangle( String color ,double a,double b){ super();
this.color=color; this.a=a; this.b=b;}
public double getArea(){
4
return a*b;} }
public class TestShape{
public static void mian(String[] args){ Circle t1=new Circle(\红\ Rectangle t2=new Rectangle(\蓝\
System.out.println(\该圆的颜色为:\\面积为:\
System.out.println(\该矩形面积为:\ }
4、Java包的实践
修改第3题的Java程序,利用package关键字、jar命令将上述四个类打包为一个为名为Shapes4.jar包文件。 在源程序前加package shapes4;
三、实验体会:
1、对抽象方法和抽象类的定义和使用还不是很清楚,不知道如何重写抽象方法的。
2、定义为public或者不定义的影响不知道,为什么类定义为public类时编译会出错,不定义时不会出现同样的错误。类中的对象的定义为public或者private的区别,以及对后续函数的影响不是很清楚。
3、编写时会出现一些细节性的错误,不过经过调试基本可以解决,如:输出语句没写对,少打了一个大括号等。
4、最后一个Shape、 TestShape等类的编写题目执行时出错,不知道怎么解决。
5、打包类,之前按照书上写语句总是不对,后来老师讲过之后知道了是路径的问题。
6、要多自己上机做实验。
5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java实验报告类构造函数与继承在线全文阅读。
相关推荐: