Java 实验报告
        实验一  类与对象
一、实验目的
1.掌握类的声明。
2.掌握对象的创建。
3.掌握方法的定义和调用。
4.掌握构造函数的使用。
二、实验内容
1.编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体的体积。创建一个对象,求给定尺寸的立方体的体积。
代码:
class Box {
    double length,weight,height;
    double V;
    public void setDome(double length, double weight, double height) {
        this.length = length;
        this.weight = weight;
        this.height = height;
    }
    public void setV(double length, double weight, double height){
        System.out.println("V="+length*weight*height);
    }
}
public class shiyan1 {
    public static void main(String[] args) {
        Box b=new Box();
        b.setDome(5, 6, 7);
        b.setV(5,6,7);
    }
}
运行结果:
2.将上题的方法setDemo改用构造函数实现初始化。
代码:
class Box {
    double length,weight,height;
    double V;
    public Box(double length, double weight, double height) {
        this.length = length;
        this.weight = weight;
        this.height = height;
    }
    public void setV(double length, double weight, double height){
        System.out.println("V="+length*weight*height);
    }
}
public class shiyan1gouzao {
    public static void main(String args[]){
        Box b=new Box(4,5,6);
        b.setV(4, 5, 6);
    }
}
运行结果:
三、思考题
1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用?
答:在方法或块内定义的变量不能再方法外或块外使用,这种变量叫做局部变量,方法的形参不可以再方法之外使用。
2.为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调用?
答:其特殊性在于它的名字必须在它所在的类的名字完全相同,而且没有类型,构造方法也可以重载。在创建对象时调用构造函数。
实验二 继承与多态
一、实验目的
1.掌握类的继承方法。
2.掌握变量的继承和覆盖。
3.掌握方法的继承、重载和覆盖。
4.了解接口的实现方法。
二、实验内容
1.运行下面的程序,理解成员变量的继承与隐藏。
import java.io.*;
class sum_3{
int sum,num1,num2;
static int num3;
//定义构造函数初始化对象
sum_3(){
  num1=0;
  num2=0;
  num3=0;
  sum=0;
}
}
class sub_sum3 extends sum_3{
  int sum,num1,num2;  //隐藏父类sum_3中的实例变量
  static int num3;  //隐藏父类sum_3中的类变量
  void sum(int i,int j,int k){
  num1=i;
  num2=j;
  num3=k;
  sum=num1+num2+num3;
  }
}
public class computing{
  public static void main (String arg[]){
  sub_sum3 m1=new sub_sum3();
  m1.sum(100,200,300);
  System.out.println("sum="+m1.num1+"+"+m1.num2+"+"+m1.num3+"="+m1.sum);
  }
}
2.运行下面的程序,理解方法的继承。
class Sort3{
  double max1,max2,max3;
  Sort3(){
  max1=-1;
  max2=-1;
  max3=-1;
  }
void sort(){
  double s;
  if (max1<max2){
    s=max1;max1=max2;max2=s;
  }
  if (max1<max3){
    s=max1;max1=max3;max3=s;
  }
  if (max2<max3){
    s=max2;max2=max3;max3=s;
  }
}
}
class sub_Sort3 extends Sort3{
void subsort(double i,double j,double k){用sort out
  max1=i;
  max2=j;
  max3=k;
  sort();  //调用父类中的方法sort()
  }
}
public class Class1{
  public static void main (String args[]){
  sub_Sort3 m1 = new sub_Sort3();
  m1.subsort(100,200,300);
  System.out.println("三个数从大到小为:"+m1.max1+","+m1.max2+","+m1.max3);
  }
}
3.运行下面的程序,理解方法的重载。
class Sort2or3{
  double max1,max2,max3;
  Sort2or3(){
  max1=-1;
  max2=-1;
  max3=-1;
  }
void sort(double i,double j){
  double s;
  max1=i;
  max2=j;
  if(max1<max2){
    s=max1;max1=max2;max2=s;
  }
  }
void sort(double i,double j,double k){
  double s;
  max1=i;
  max2=j;
  max3=k;
  if (max1<max2){
    s=max1;max1=max2;max2=s;
  }
  if (max1<max3){
    s=max1;max1=max3;max3=s;
  }
  if (max2<max3){
    s=max2;max2=max3;max3=s;
  }
  }
}
public class Class1{
  public static void main (String args[]){
  Sort2or3 m1 = new Sort2or3();
  m1.sort(100,200);
  System.out.println("两个数从大到小为:"+m1.max1+","+m1.max2);
  m1.sort(50,150,100);
  System.out.println("三个数从大到小为:"+m1.max1+","+m1.max2+","+m1.max3);
}
}
4.运行下面的程序,理解方法的覆盖。
class sort_Demo{
  int i,j,k,swap;
  sort_Demo(){
    i=j=k=swap=0;
  }
  void sort(int t1,int t2[]){                  //父类中的方法用来实现升序
  //用选择法按升序排列
    for(i=0;i<t1-1;i++){
      k=i;
      for(j=i+1;j<t1;j++)
      if(t2[j]<t2[k]) k=j;
      if (k!=i){
      swap=t2[i];
      t2[i]=t2[k];
      t2[k]=swap;
    }
  }
}
}
class sub_sort_Demo extends sort_Demo{
  void sort(int t1,int t2[]){            //子类中的方法实现降序
  //用选择法实现降序排列
  for(i=0;i<t1-1;i++){
    k=i;
    for(j=i+1;j<t1;j++)
    if(t2[j]>t2[k]) k=j;
    if (k!=i){
    swap=t2[i];
    t2[i]=t2[k];
    t2[k]=swap;
  }
  }
}
}
public class Class1{
  public static void main (String args[]){
    int a[]={34,12,8,67,88,23,98,101,119,56};
    sort_Demo m1=new sort_Demo();
    sub_sort_Demo m2=new sub_sort_Demo();
    System.out.println("排序前的数据为:");
    for (int i=0;i<10;i++)
    System.out.print("  "+a[i]);
    //调用父类中的sotr()方法
    m1.sort(a.length ,a);
    System.out.println("\n按升序排列的数据为:");
    for (int i=0;i<10;i++)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。