java继承与接口 实验报告

应用数学学院 信息与计算科学专业   2   班 学号3111008162

姓名 许庆平  教师评定_________________

实验题目           继承与接口          

一、     实验目的与要求

实验目的:

1、掌握类的继承关系。

2、掌握接口的定义与使用。

实验要求:

    按下列要求编写Java程序:

1、定义接口Printx,其中包括一个方法printMyWay(),这个方法没有形参,返回值为空。

2、编写矩形类,矩形类要求实现Printx接口,有求面积、求周长的方法,printMyWay()方法要能显示矩形的边长、面积和周长。

    3、编写正方形类作为矩形类的子类,正方形类继承了矩形类求面积和周长的方法,新增加求对角线长的方法,重写printMyWay()方法,要求该方法能显示正方形的边长、面积、周长和对角线长。

二、     实验方案

先按要求定义接口Printx,再创建一个矩形类Rectangle,有成员变量length和width,area()求面积,circle()求周长,用PrintMyWay()显示。

然后定义正方形类,继承Rectangle类,定义求对角线长的函数duijiaoxian()。

面积和周长用父类中的area()和circle()实现。用PrintMyWay()显示。

最后在主类中实现这两个类。

三、代码如下

interface Printx

 { void  PrintMyWay();}

 class Rectangle implements Printx

 {

     int length,width;

     Rectangle(int x,int y){

         length=x;

         width=y;

     }

     int area(){

         return length*width;

     }

     int circle(){

         return 2*(length+width);

     }

 public void PrintMyWay(){

      System.out.println("矩形的长为:"+length);

      System.out.println("矩形的宽为:"+width);

      System.out.println("矩形的面积为:"+area());

      System.out.println("矩形的周长为:"+circle());

     

     

  }

    

 }

 class Square extends Rectangle{

   int lenth;

 

   Square(int a){

       super(a,a);

       lenth=a;

   }

   double duijiaoxian(){

       return Math.sqrt(2*length*length);

              

   }

     public  void PrintMyWay(){

       System.out.println("正方形的边长为:"

               +lenth+" 正方形的面积为:"+

               area()+" 正方形的周长为:"+circle()+" 正方形的对角线长为:"+duijiaoxian())

public class test {

   

    public static void main(String[] args) {

         Rectangle p;

         p=new Rectangle(2,3);

         p.PrintMyWay();

         Square s;

         s=new Square(4);

         s.PrintMyWay();

      

    }

}

四、实验结果和数据处理

三、     结论

在类中定义的方法若要在主类中调用,就要定义为public方法,否则在主类中调用时会出错。

子类不能继承父类的构造函数,只能通过super调用父类的构造函数。

四、     问题与讨论

   问题:

  在父类和子类中都定义的printMayWay()方法,为什么子类的对像只调了用子类printMayWay()方法,而没有调用父类的printMayWay()方法呢?

讨论:

因为子类的的方法会覆盖父类的方法,所以子类的对象只会调用子类的printMayWay()方法二不是调用父类的printMayWay()方法。

 

第二篇:Java接口实验报告

昆明理工大学信息工程与自动化学院学生实验报告

201120##学年学期

课程名称:java程序设计     开课实验室:         年 月 日

一、实验目的及内容

目的:掌握Java中接口的概念

内容:

1.        完成下面要求的程序

u  定义一个接口Shape,它含有一个抽象方法 int area( )

Public interface Shape{

{

   Public abstract double area1();

  System.out.println(area= width*height/2);

}

{

Public abstract double area2();

  System.out.println(area= width*height);

}

}

u  定义一个表示三角形的类Triangle,该类实现接口Shape。此类中有两个分别用于存储三角形宽度和高度的private成员变量int width和int height,在该类实现的方法area中计算并返回三角形的面积。

Public class Triangle

{

     Private int width;

     Private int height;

Public double area()

{

   Return Shape.area1(width,height);

Public static void main(String args[])

{
System.out.println(area )

}

}

u  定义一个表示矩形的类Rectangle,该类实现接口Shape。此类中有两个分别表示矩形长度和宽度的成员变量int width和int height,在该类实现的方法area中计算并返回矩形的面积。

Public class Rectangle

{

         Private int width;

         Private int height;

Public double area()

{

        Return Shape.area2(width,height);

Public static void main(String args[])

{
System.out.println(area )

}

}

u  定义一个类ShapeTest,该类中有一个方法如下:
public static void showArea(Shape s){
   System.out.println(“area=”+s.area());
}
在ShapeTest类中定义main函数,在main函数中创建Triang类的对象和Rectangle类的对象,并调用方法showArea两次以输出两个对象的面积。

u  思考:两次调用showArea方法时调用的area方法各是在哪个类中定义的方法?答:三角形调用showArea方法时调用的area方法是main函数中Triangle类中定义的方法,而矩形调用showArea方法时调用的area方法是main函数中Rectangle类中定义的方法

二、要求

给出实验内容1的程序设计、实现和结果,并对结果进行分析。

     通过利用接口求解三角形和矩形的面积,使我大致掌握了接口的意义和作用,可以被多个类实现,在该程序中,接口Shpape中含有抽象方法area,类Triangle和类Rectangle共同调用了接口Shape中的抽象方法area,来求解不同形状的面积,接口还提供方法声明与方法相分离的机制,使实现接口的多个类表现出共同的行为能力,接口中声明的抽象方法在实现接口的多个类中表现出多态性。

相关推荐