我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JAVA——实验报告(1-5)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JAVA——实验报告(1-5)

实验一 条件语句、循环语句的使用

实验目的

1、掌握if条件语句的语法格式,了解if条件语句的执行流程。

2、熟悉switch条件语句的语法格式,了解switch条件语句的特点。

3、掌握while循环语句的语法格式和使用, 了解while循环语句的特点。

4、掌握for循环语句的语法格式和使用,了解for循环语句的特点。

5、掌握循环嵌套的使用和执行顺序。

实验过程

项目1、使用if…else if…else语句实现判断某月是哪个季节的功能

1)编写一个类Example11

2)定义一个变量month用于存储月份。

3)用if条件语句,判断这个月份在哪一个季节并输出结果,如:春季是3、4、5月,夏季是6、7、8月,秋季是9、10、11月,冬季是12、1、2月

4)由于一年只有12个月,所以要过滤除1-12以外的月份值

源代码:

package cn.edu.hbuas.dierzu;

import java.util.Scanner;

public class Example11 {

   public static void main(String[] args) {

      System.out.println("请输入月份,系统为您判断此时的季节");

      Scanner scan=new Scanner(System.in);

      int month=scan.nextInt();

      if (month == 3 || month == 4 || month == 5) {

      //3月、4月、5月,输出结果为春季

      System.out.println(month + "月是春季");

      } else if (month == 6 || month == 7 || month == 8) {

      //6月、7月、8月,输出结果为夏季

      System.out.println(month + "月是夏季");

      } else if (month == 9 || month == 10 || month == 11) {

      //9月、10月、11月,输出结果为秋季

      System.out.println(month + "月是秋季");

      } else if (month == 12 || month == 1 || month == 2) {

      //12月、1月、2月,输出结果为冬季

      System.out.println(month + "月是冬季");

      } else {

      //一年只有12个月,范围不在1-12间的需要过滤掉

      System.out.println("没有这个月份,请重新输入");

      }

   }

}

代码执行结果:

项目2使用switch 条件语句实现判断选择题对错的功能

1)编写一个类Example12

2)定义一个变量answer用于存储答案选项

3)用switch条件语句判断如果变量answer为B则正确,其它则错误

4)如果变量answer不等于ABCD四个选择则打印“不存在此选项”

源代码:

package cn.edu.hbuas.dierzu;

import java.util.Scanner;

public class Example12 {

   public static void main(String[] args) {

      System.out.println("请输入你想到答案,系统会为您判断对错");

      Scanner scan=new Scanner(System.in);

      String answer=scan.next();

      switch(answer)

      {

      case "A":

      System.out.println("A错误");//答案为A错误

      break;

      case "B":

      System.out.println("B正确");//答案为B正确

      break;

      case "C":

      System.out.println("C错误");//答案为C错误

      break;

      case "D":

      System.out.println("D错误");//答案为D错误

      break;

      default:

      System.out.println("该选项不存在");//输入范围不合适

      }

      }

}

代码执行结果:

项目3使用while语句实现统计1-10以内奇数的个数的功能

1)编写一个类Example13

2)定义一个变量x为1,用while语句循环条件为x<=10

3)在while循环中,使用表达式x%2判断是否为奇数,如果为奇数,则变量count的值加1。

源代码:

package cn.edu.hbuas.dierzu;

public class Example13 {

   public static void main(String[] args) {

      int x=1;

      int count;

      count=0;

      while(x<=10)

      {

      if(x%2==1){

      count++;//如果为奇数,则变量count+1

      System.out.println(x);

      }

      x++;

      }

      System.out.println("count="+count);

      }

}

代码执行结果:

项目4使用for循环语句计算1+2+3+4+5...+100表达式的结果

1)编写一个类Example14

2)在该类中定义一个变量sum来存储每次循环整数相加的和。

3)在for循环语句中定义变量x,循环条件为x<=100

源代码:

package cn.edu.hbuas.dierzu;

public class Example14 {

   public static void main(String[] args) {

      int sum=0;

      for(int x=1;x<=100;x++)

      {

      sum=sum+x;

      }

      System.out.println("sum="+sum);//输出总和

      }

}

代码执行结果:

项目5用for循环嵌套打印由“*”组成的直角三角形。具体要求如下:

    第一个三角形为倒直角三角形,共5行,第一行5个 “*”,一行减少一个,第5行一个“*”  

    将倒直角三角形上下翻转为正直角三角形,第一行1一个“*”,第5行5个“*”

1) 分析第一个三角形的打印,外层for循环控制行数,初始化表达式从0开始,循环条件为小于5;第一行是5个“*”所以应该内层循环打印5次,初始化表达式从0开始,循环条件为小于5。同理,内层的循环初始化和条件如下所示:

         0 1 2 3 4

                1 2 3 4

                2 3 4

                3 4

                4

由此可见内层循环的初始化表达式y 与外层的x是相等的,循环条件都是小于5。

2) 分析第二个三角形的打印,第一行1个“*”,第二行2个“*”...由此可见,内层循环的循环次数与行数是相等的,所以内层循环的y小于或等于外层的x。

源代码:

package cn.edu.hbuas.dierzu;

public class Example15 {

   public static void main(String[] args) {

      for(int x=0;x<5;x++)

      {

      for(int y=x;y<5;y++)

      {

      System.out.print("*");

      }

      System.out.println();

      }//输出倒三角形

      System.out.println("————————————————");

      for(int x=0;x<5;x++)

      {

      for(int y=0;y<=x;y++)

      {

      System.out.print("*");

      }

          System.out.println();//输出三角形

          }

      }

}

代码执行结果:

实验反思

通过本次实验学习到了一下几点:

1、if…else if…else语句用于对多个条件进行判断,进行多种不同的处理。

2、switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。

3、while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环才会结束。

4、continue语句和break语句的区别在于,break结束循环,continue只是跳过后面的语句继续循环。

5、做任何判断都要考虑其它因素,考虑对用户的友好性,在出了超出范围、输入方式不对等情况时,给予提示。

实验二 方法的定义、重载;数组的应用

实验目的

1、掌握方法的定义。

2、了解重载的定义,掌握方法重载的用法。

3、掌握一维数组的定义。

4、掌握如何获取一维数组的最值。

5、掌握一维数组中元素的排序。

实验过程

项目1定义一个方法,并且该方法能够实现四则运算的功能。

1)编写一个类Example21

2)定义一个方法siZe,设置三个参数,两个数字为int型,一个符号为char型

3)在方法中,用if选择语句根据传入的符号参数进行不同的运算

4)如果传入的符号不包含在加减乘除四个符号中则输出“符号错误”

5)在main方法中调用方法计算3*0的结果,测试方法是否成功运算出正确结果

源代码:

package cn.edu.hbuas.dierzu;

import java.util.Scanner;

public class Example21 {

   public static void siZe(String[] args) {

      Scanner scan=new Scanner( System.in);//创建一个scan对象获取输入的值,从键盘键入值

      System.out.println("请输入第一个数值");

      int a=scan.nextInt();//从键盘键入第一个值

      System.out.println("请输入第二个数值");

      int b=scan.nextInt();//从键盘键入第二个值

      System.out.println("请输入运算符");

      String c=scan.next();//从键盘键入符号

      float d;

      if(c.equals("+")){

      d=a+b;

      System.out.println(a+"+"+b+"="+d+"");}//equals是判断字符是否相等

      else if(c.equals("-")){

      d=a-b;

      System.out.print(+a+"-"+b+"="+d+"");}

      else if(c.equals("*")){

      d=a*b;

      System.out.print(+a+"*"+b+"="+d+"");}

      else if(c.equals("÷")){

      d=a/b;

      System.out.print(+a+"÷"+b+"="+d+"");}

      else

      System.out.println("符号错误");}//如果输出的符号不等同于前四个,则提示输出符号错误。

      public static void main(String[] args) {

      Example21 st=new Example21();

      st.siZe(args);}

}

代码执行结果:

项目2通过方法重载的方式实现九九乘法表的打印。

1)编写一个类Example22

2)在Example22中定义一个带参数的方法print99,该参数用于指定乘法表打印的行数

3)在Example22中定义一个方法print99,此方法没有参数。

4)在main方法中分别调用无参方法print99()和有参方法print99(6),测试两个重载的方法print99能否成功打印出符合要求的乘法表。

源代码:

package cn.edu.hbuas.dierzu;

public class Example22 {

   public static void main(String[] args) {

      print99();//调用对象方法

      print99(6);//调用对象方法

      }

   private static void print99(int x){

      for(int i=1;i<=x;i++){ //控制行

         for(int j=1;j<=i;j++){ //控制一行多少

            int n=i*j;

            System.out.print(i+"*"+j+"="+n+" ");//按照格式输出

            }

         System.out.println("");

         }

      System.out.println("——————————————————————————————————————————————————————————————");

      }

   private static void print99(){

      print99(9);//调用对象方法

      }

}

代码执行结果:

项目3定义一个数组,将序列{0,1,2,3,4}赋值给数组,并写一个方法用来访问数据的每一个元素。

1)定义一个数组,在初始化数组时有一种方式叫做静态初始化,就是在定义数组的同时就为数组的每个元素赋值。可以在定义数组时将序列{0,1,2,3,4}赋值给数组。

2)定义一个方法printArr()输出数组的元素,可以用for循环语句依次输出数组的元素,各元素用“,”间隔可以更清楚的输出元素。

3)在最后一个元素输出时,后面就不需要加“,”了,所以循环到length-1时不打印“,”。

源代码:

package cn.edu.hbuas.dierzu;

public class Example23 {

   public static void printArr (String[] args){//定义一个printArr方法

      int[] x={0,1,2,3,4};

      System.out.print("[");

      for (int i=0;i<x.length-1;i++){//循环输出数组值到数组的最后一个元素前结束

         System.out.print(x[i]);

         System.out.print(",");

      }

      System.out.print(x[x.length-1]);//输出最后一个元素

      System.out.println("]");

      }

   public static void main(String[] args){

      Example23 st=new Example23();

      st.printArr(args);//调用printArr方法

      }

}

代码执行结果:

项目4定义一个数组,并获取该数组中值最小的元素

1)定义一个数组。

2)定义一个方法,用来获取最小值。该方法应返回一个int型的数值,参数为数组类型。在方法中,定义一个临时变量min,用于记住数组的最小值。首先假设数组中第一个元素arr[0]为最小值,然后使用for循环对数组进行遍历,在遍历的过程中只要遇到比min值还小的元素,就将该元素赋值给min。这样一来,变量min就能够在循环结束时记住数组中的最小值。

3)在main方法中调用该方法,将定义的数组作为参数传给方法,获取该数组的最小值。

源代码:

package cn.edu.hbuas.dierzu;

public class Example24 {

   public static void main(String[] args){

      int[] arr={66,55,44,11,22};

      int x=minx(arr); //调用对象方法

      System.out.println("最小值为"+x);

      }

   private static int minx(int[] arr){

      int min=arr[0]; //第一个元素设置成最小值

      int lenth=arr.length; //for循环结束条件

      for(int i=1;i<=lenth-1;i++){

         if(min>arr[i]){

            min=arr[i]; //数组的元素找出最小值

            }

         }

      return min;

      }

}

代码执行结果:

项目5对数组元素进行选择排序

1)定义排序方法,在方法中,用for循环嵌套实现排序。第一层循环是从数组的第一个元素开始循环。第二层循环用于与第一层循环中的元素比较找出最值,并将最小值的下标跟第一个元素的下标进行互换。

2)为了方便观察排序结果,将第3题中的printArr()方法复制到类中,输出排序前和排序后的数组元素。

源代码

package cn.edu.hbuas.dierzu;

public class Example25 {

   public static void main(String[] args){

      int[] arr={9,4,7,8,5,6,1,3,2};//静态初始化,随机给出一组数据

      System.out.print("您事先输入好的数组排序前为");

      printArray(arr);//打印数组元素

      selectSort(arr);//选择调用顺序方法

      System.out.print("您事先输入好的数组排序后为");

      printArray(arr);//打印数组元素

      }//定义打印数组元素的方法

      public static void selectSort(int[] arr){

         for (int x=0;x<arr.length-1;x++){// 循环遍历数组的元素

            for (int y=x+1;y<arr.length;y++){

                if(arr[y]<arr[x]){//比较相邻元素,然后调换顺序

                   int temp=arr[x];

                   arr[x]=arr[y];

                   arr[y]=temp;

                   }

                }

            }

         }

      public static void printArray(int[] arr){

         System.out.print("[");    

         for(int x=0;x<arr.length;x++){

            if(x==(arr.length-1)){

                System.out.print(arr[x]);

                }

            else{

                System.out.print(arr[x] + ",");

                }

            }

         System.out.println("]");

         }

      }

代码执行结果:

实验反思

数组:

1、 数组的好处:数组里的每个元素都有编号,编号从0开始,并且一次递增,方便操作其中的元素。
2、 要在程序中使用数组,就必须要声明数组,再给数组分配内存。
3、 数组对应在内存中一段连续空间。
4、 数组元素必须是相同数据类型,可以是引用数据类型,但是同一个数组中的元素必须 是同一类数据类型。

方法:

1、java方法是语句的集合,它们在一起执行一个功能。
2、方法是解决一类问题的步骤的有序组合。
3、方法包含于类或对象中。
4、方法在程序中被创建,在其他地方被引用。

总结:

数组不是集合,它只能保存同种类型的多个原始类型或者对象的引用。数组保存的仅仅是对象的引用,而不是对象本身。
数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

实验三 类的定义、封装;构造方法的定义、重载

实验目的

1、掌握类定义的方式,掌握如何在类中定义成员变量和成员方法。

2、掌握如何创建类的对象,掌握如何使用两个或者多个变量引用同一个实例对象。

3、了解为什么要对类进行封装,了解如何实现类的封装。

4、掌握有参构造方法的定义方式,理解系统会自动分配无参构造方法的情况。

5、掌握如何在类中定义重载的构造方法。

实验过程

项目1、设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。

1)使用class关键字定义一个表示学生类型的类,类名为Student。

2)在Student类中定义两个成员变量name和age,分别用来表示姓名和年龄。其中,name的数据类型为String,变量age的数据类型为int。

3)在Student类中定义一个表示说话行为的speak()方法,用于输出学生的姓名和年龄。

源代码:

package cn.edu.hbuas.dier;

public class Student {

   private String name;

   private int age;

   public Student(String s,int a){

   this.name=s;

   this.age=a;

   }

   public void speak(){

   System.out.println("我的名字是"+this.name+",我今年"+this.age+"岁了。");

   }

}

代码执行结果:

项目2基于上一题,创建三个学生对象,它们的引用变量分别是s1、s2和s3,首先分别使用s1和s2引用,为name和age赋值,然后调用speak()方法,最后将s2变量赋值给s3, s3也调用speak()方法。

1)编写Example32类

2)在main()方法中,创建Student类的第一个对象,其引用变量为s1,使用s1调用name和age变量分别为它们赋值为“张三”和“19”,然后调用speak()方法。

3)创建Student类的第二个对象,其引用变量为s2,使用s2分别为name和age赋值为“李四”和“20”,然后调用speak()方法。

4)创建Student类的第三个对象,其引用变量为s3,将s2的值赋给s3,然后使用s3调用speak()方法。

源代码:

package cn.edu.hbuas.dier;

public class Example32 {

   public static void main(String[] args) {

      Student s1=new Student("张三",19);

      Student s2=new Student("李四",20);

      Student s3=s2;

      s3.speak();

   }

}

代码执行结果:

项目3使用private关键字对成员变量name和age进行私有化,同时分别提供一个setName(String n)和setAge(int a)方法用于外界的访问,其中setAge(int a)中需要对age进行判断。

1) 编写测试类Example33,将属性age的值设为-30,演示不合理现象。

2) 对Student类进行修改,将name和age属性使用private修饰,然后定义getName()、setName(String n)、getAge()和setAge(int a)四个对外访问name和age的方法。

3) 在setAge(int a)方法中对传入的参数进行检查,如果输入值为负数,则打印出“设置的年龄不合法”,如果不为负数,才将其设置为age属性的值。

4)对Example33类进行修改,在main()方法中创建Student类的实例对象,通过调用对象的setName(String n)和setAge(int a)方法来设置的name属性和age属性值,并调用speak()方法。

源代码:

Student

package cn.edu.hbuas.dier;

public class Student {

   private String name;

   private int age;

   public void setName(String n) {

   this.name = n;

   }

   public void setAge(int a) {

   if(a > 0)

   this.age = a;

   else

   System.out.println("设置的年龄不合法");

   }

   public int getAge() {

   return age;

   }

   public String getName() {

   return name;

   }

   public void speak(){

   System.out.println("我的名字是"+this.name+",我今年"+this.age+"岁了。");

   }

}

Example33

package cn.edu.hbuas.dier;

public class Example33{

    public static void main(String[] args) {

    Student s1 = new Student();

    s1.setAge(-30);

    s1.setName("张三");

    Student s2 = new Student();

    s2.setAge(20);

    s2.setName("李四");

    Student s3 = s2;

    s3.speak();

    }

}

代码执行结果:

项目4演示如何使用有参构造方法完成对象属性的初始化。

1) 定义一个Student类,该类有一个age属性,在类中定义一个有参数的构造方法,该参数用于为age属性赋值。

2) 编写一个测试类Example34,在main()方法中通过有参构造方法创建一个对象。

3) 打印该对象age属性的值。

源代码:

Student

package cn.edu.hbuas.dier;

public class Student {

   private String name;

    private int age;

    public Student(String s,int a){

    this.name = s;

    this.age = a;

    }

    public int getAge() {

    return age;

    }

}

Example34

package cn.edu.hbuas.dier;

public class Example34 {

   public static void main(String[] args) {

      Student s1 = new Student("张三",19);

      System.out.println("我的年龄是:"+s1.getAge());

      }

}

代码执行结果:

项目5通过创建对象的方式演示不同构造方法的使用方式,并根据构造方法的输出结果对构造方法的重载进行学习。

1)对Student类进行修改,在类中定义三个重载的构造方法,包括无参的构造方法,接收一个String类型参数的构造方法,接收String类型和int类型两个参数的构造方法。

2)编写测试类Example35,在main()方法中,分别使用三个重载的构造方法创建三个Student对象。

源代码:

Student

package cn.edu.hbuas.dier;

public class Student {

   private String name;

   private int age;

   public Student(){}

   public Student(String s){

   this.name = s;

   }

   public Student(String s,int a){

   this.name = s;

   this.age = a;

   }

   public void speak(){

   System.out.println("我的名字是"+this.name+",我今年"+this.age+"岁了。");

   }

}

Example35

package cn.edu.hbuas.dier;

public class Example35 {

   public static void main(String[] args) {

      Student s1 = new Student("王五",18);

      Student s2 = new Student("张三",19);

      Student s3 = new Student("李四",20);

      s1.speak();

      s2.speak();

      s3.speak();

   }

}

代码执行结果:

实验反思

1Java语言严格区分大小写,classClass是不同的,在定义类时只能使用class关键字
2、在Student类中,成员变量nameString类型,String表示一个字符串

3、和普通方法一样,构造方法中同样可以接收多个参数,只要在使用new关键字创建对象时,传入数量相同和类型一致的参数,就可以自动地调用对应的构造方法。

4、一个类中如果没有定义构造方法,系统会默认为其分配一个方法体为空的无参构造方法,而一旦定义了构造方法,系统就不再提供默认的构造方法。

5、一个类中可以定义多个重载的构造方法,在创建对象时,根据传入参数的不同会调用相应的构造方法。

6、只要实现了封装就能对外界的访问进行控制,避免对私有变量随意修改而引发问题。

实验四 静态方法、静态内部类的使用

实验目的

1、了解在静态方法中只能访问类的静态成员,而不能访问非静态成员。

2、理解在静态内部类中可以定义静态成员和非静态成员,掌握访问静态内部类中静态成员和非静态成员的方式。

3、掌握方法内部类中访问的局部变量需要使用final关键字修饰。

实验过程

项目1、编写一个测试类,在类中定义若干个静态方法和非静态方法,通过方法之间的相互调用,演示静态方法和非静态方法的调用情况。

1)编写Example41类,在类中定义两个静态方法staticMethod1()、staticMethod2(),两个非静态方法nonStaticMethod1()、nonStaticMethod2()

2)在Example41类中,针对定义的四个方法进行互相调用,观察调用情况。

源代码:

package cn.edu.hbuas.dier;

public class Example41 {

   public static void staticMethod1(){

      System.out.println("调用了staticMethod1方法。");

      // nonStaticMethod1();

      }

   public static void staticMethod2(){

       System.out.println("调用了staticMethod2方法。");

       }

   public void nonStaticMethod1(){

       System.out.println("调用了nonStaticMethod1方法。");

       staticMethod1();

       nonStaticMethod2();

       }

   public void nonStaticMethod2(){

       System.out.println("调用了nonStaticMethod2方法。");

       }

   public static void main(String[] args) {

       System.out.println("调用了main方法。");

       Example41 e = new Example41();

       e.nonStaticMethod1();

       }

}

代码执行结果:

项目2设计一个静态内部类,并编写测试类演示如何访问静态内部类中的静态成员和非静态成员。

1)定义外部类Outer,在Outer类中定义一个静态内部类Inner。

2)在Inner中定义两个String类型变量,一个静态变量staticField,其值为“静态内部类的静态变量”,一个非静态变量nonStaticField,其值为“静态内部类的非静态变量”。定义两个方法,一个静态方法staticMethod()打印“静态内部类的静态方法”,一个非静态方法nonStaticMethod()打印“静态内部类的非静态方法”。

3)编写Example42类,在类的main()方法中调用Inner类中的变量和方法。

源代码:

package cn.edu.hbuas.dier;

import org.w3c.dom.ls.LSOutput;

class Outer{

   static class Inner{

      static String staticField = "静态内部类的静态变量";

      String nonStaticField = "静态内部类的非静态变量";

      static void staticMethod(){

         System.out.println("静态内部类的静态方法");

      }

      void nonStaticMethod(){

         System.out.println("静态内部类的非静态方法");

      }

   }

}

public class Example42{

   public static void main(String[] args){

      Outer.Inner inner = new Outer.Inner();

      System.out.println(inner.nonStaticField);

      inner.nonStaticMethod();

   }

}

代码执行结果:

项目3编写一个方法内部类,演示如何在方法内部类中访问局部变量。

1)编写Example43类,在类中定义一个test()方法,test()方法中定义一个int类型的局部变量num,其值为5。

2)在test()方法中定义一个方法内部类Inner,在Inner类中定义一个show()方法,方法中访问局部变量num。在test()方法中创建内部类Inner的实例对象,调用其show()方法。

3)在Example43的main()方法中,创建Example43的实例对象,使用变量e引用该对象,通过变量e调用test()方法。

源代码:

package cn.edu.hbuas.dier;

public class Example43 {

   void test() {

      int num = 5;

      class Inner {

      void show() {

      System.out.println("局部变量num的值为" + num);

      };

      }

      Inner inner = new Inner();

      inner.show();

      }

      public static void main(String[] args) {

      Example43 e = new Example43();

      e.test();

      }

}

代码执行结果:

实验反思

1、在静态方法中只能访问静态方法,在非静态方法中可以访问静态方法和非静态方法。

2、非静态变量只能通过对象或者对象的引用变量访问,而静态方法在创建对象之前就可以通过类名直接访问,因此在静态方法中不能访问非静态变量,只能访问静态变量。

3、静态内部类中可以定义静态成员和非静态成员,如果要访问非静态成员,必须通过静态内部类的对象或者对象的引用变量。如果要访问静态成员,则可以直接通过外部类.静态内部类.静态成员的方式,不需要创建静态内部类的实例对象。

4、方法内部中访问的局部变量必须使用final关键字修饰,否则程序在编译时会发生错误。

实验五 类的继承

实验目的

1、了解类继承的意义和作用,掌握如何实现类的继承。

实验过程

项目1、编写程序演示类的继承并编写测试类验证子类是否拥有父类的可继承成员。

1)设计两个类Student和Teacher

2)抽取两个类共同的内容(如:吃饭、睡觉)封装到一个类Person中,各自特有的部分保留在各自类中。

3)让学生类继承Person类,老师类也继承Person。

4)编写测试类Example51,测试Student类和Teacher是否继承了Person类的成员。

源代码:

Person

package cn.edu.hbuas.dier;

public class Person {

   String name;

   int age;

   public void eat(){

   System.out.println(name + "在吃饭");

   }

   public void sleep(){

   System.out.println(name + "在睡觉");

   }

}

Student

package cn.edu.hbuas.dier;

class Student extends Person{

   public Student(String name,int age){

      this.name = name;

      this.age = age;

      }

   public void speak(){

      System.out.println("我叫"+this.name+"我今年"+age+"岁了,我是一个学生。");

      }

}

Teacher

package cn.edu.hbuas.dier;

class Teachar extends Person{

   public Teachar(String name,int age){

      this.name = name;

      this.age = age;

      }

   public void speak(){

      System.out.println("我叫"+this.name+"我今年"+age+"岁了,我是一个老师。");

      }

}

Example51

package cn.edu.hbuas.dier;

public class Example51 {

    public static void main(String[] args) {

    Student s = new Student("红果果",15);

    Teachar t = new Teachar("绿泡泡",25);

    s.speak();

    s.eat();

    s.sleep();

    t.speak();

    t.eat();

    t.sleep();

    }

}

代码执行结果:

实验反思

1、在Java中,多个类可以继承一个父类,但是一个类不能直接继承多个类,一个类只能有一个直接父类。

2、父类是由子类不断抽取而来的,不断地抽取就形成了体系结构,这个结构称为继承体系结构。

3、子类在继承父类的时候,会自动拥有父类所有的成员。

4、继承的好处是划分了类的层次性,实现了代码重用、扩展了程序功能。

来源地址:https://blog.csdn.net/FengleYiMan/article/details/131223612

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JAVA——实验报告(1-5)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

云服务器设计实验报告

以下是一个简单的服务器设计实验报告示例:实验目的本实验旨在测试ApacheTomcat服务器(Tomcat)是否适合用于Web开发。通过实验,用户可以熟悉ApacheTomcat的开发和部署流程,并掌握如何创建、配置和管理Web应用程序。实验步骤1.安装Apache在本实验之前,你需要下载ApacheTomcat,并将其从互联网上下载。下载后,你应该安装它并将其与计算机上的虚拟主机相互
2023-10-26

云服务器iis配置实验报告

很抱歉,我无法为您提供一份完整的IIS配置实验报告,因为这需要您提供您的网络环境、服务器、操作系统和网站等信息。我会尽力向您展示一些基础的实验内容,例如:安装IIS服务器:您需要了解IIS安装的基本步骤,以及如何使用安装向导来安装服务器。配置WEB服务器:您需要配置WEB服务器,以使其能够与IIS服务器通信,并向其发送Web请求。您可以使用IIS标准配置向导来创建WEB服务器。安装FT
2023-10-26

云服务器的搭建实验报告

很抱歉,我无法为您提供一个简单的服务器搭建实验报告,因为这需要考虑到多个因素,如您对服务器的要求、预算、可用性和性能等,并需要进行更复杂的计算和分析,才能提供更准确的实验报告。对于大多数云服务器,您需要考虑以下几点:可用性:选择一个可用性良好的服务器,并确保它能够快速响应负载和处理请求。性能:选择一个性能良好的服务器,并确保它能够处理大量的请求,并且不会出现任何瓶颈。安全性:确保您的服
2023-10-26

win8怎么加载语言包实验报告?

win8加载语言包实验报告 1、进入设置界面主要是要找到进入控制面板的方法,快捷键win+ C/设置/控制面板2、打开控制面板选择小图标(Small icons)3、选择语言(Language)默认语言为英文,选择添加语言(Add a l
2022-06-04

云服务器设计实验报告总结

以下是一个简单的服务器设计实验报告的总结:实验目的本实验旨在让您了解云计算的基本概念、技术和架构。实验内容实验一:搭建云服务器本实验将使用微软Azure云服务器作为实验平台。在实验开始前,请确保您已安装好所需的组件,例如Windows操作系统(32位或64位版本)和MySQL数据库。实验设备本实验使用Windows操作系统(32位或64位版本)和Azure服务作为云服务器的搭建平台。实验设备:*Windows操作系统(32位或64位版本)*Azure云...
2023-10-27

创建阿里云服务器实验报告

安装和配置在购买阿里云服务器之前,首先需要选择一个合适的云服务器提供商。一般来说,不同的云服务器提供商会提供不同的云服务器配置,包括CPU、内存、存储、网络等。用户需要根据自己的业务需求选择合适的配置。在选择服务器之前,需要了解云服务器的使用方式,以及是否需要进行特殊的设置。选择合适的服务器选择阿里云服务器之后,用户需
创建阿里云服务器实验报告
2023-10-28

云服务器调度算法实验报告

1.引言随着云计算技术的发展,云服务器的使用越来越广泛。在云服务器中,调度算法是一个非常重要的问题。好的调度算法可以提高云服务器的利用率,降低成本,提高用户体验。本实验旨在比较不同的云服务器调度算法的性能,为云服务器的调度提供参考。2.实验设计本实验使用了三种不同的云服务器调度算法:先来先服务(FCFS)、最短作业优先(SJF)和最高响应比优先(HRRN)。实验使用了一个模拟的云服务器系统,其中包含了...
2023-10-27

云服务器设计实验报告怎么写

写一份服务器设计实验报告的基本思路:实验目的:介绍本次服务器设计实验的目的,包括服务器的用途,服务器的特点,如何解决系统中出现的问题等等。实验内容:介绍本次服务器设计实验涉及到的各个方面,包括网络连接、服务器操作系统、服务器配置、应用程序配置等等。实验步骤:详细描述如何设计服务器,涉及到各个方面的设计,如网络连接、操作系统、应用程序、数据库等。实验结果:详细描述本次服务器设计实验的结果,如运行时间、CPU占用...
2023-10-27

云服务器制作QQ农场实验报告

一、引言QQ农场是一款在中国非常流行的网络游戏,玩家可以在游戏中种植蔬菜、养鸡、养鸭等各种农作物。这个游戏吸引了大量的玩家,许多玩家在游戏中投入大量的时间和金钱来进行农场经营。在这个游戏中,有许多种类的蔬菜和农作物,这些农作物可以通过收获获得一定的收益。QQ农场游戏也是一种很有趣的消磨时间的方式,许多玩家通过种植自己喜
云服务器制作QQ农场实验报告
2023-10-28

云服务器的搭建实验报告怎么写

以下是一个简单的服务器搭建实验报告的范例:实验名称:云服务器的搭建实验报告本次实验的目的是搭建一个虚拟化服务器环境来实现云服务器的安装和使用。在实验中,我们将使用PXE作为虚拟化技术来搭建虚拟化服务器,并实现一些基本的虚拟化功能。安装配置我们首先通过命令行来完成虚拟机的安装和配置。在命令行中,我们输入以下命令来安装和配置PXE:pipinstallpower其中,insta
2023-10-26

云服务器设计实验报告怎么写的

一、实验目的和背景本次实验旨在探究云服务器的设计原理和实现方法,掌握云服务器的配置和部署,为未来云计算技术的发展提供必要的实践能力。二、实验原理1.1虚拟化技术云服务器通过虚拟化技术,将物理服务器资源虚拟化成多个逻辑服务器资源池,从而提高服务器资源的利用效率和灵活性。虚拟化技术可以有效地减轻服务器的负载压力,提高系统的
2023-10-27

云服务器设计实验报告怎么写好

实验目的:明确实验的目的和实验所要解决的问题。实验环境:介绍所使用的云服务器及相关的硬件设备和软件环境。实验步骤:详细描述实验的具体步骤,包括安装配置云服务器、选择虚拟机、创建数据库、创建存储空间、测试系统性能等。实验结果:记录实验过程中所采集的数据和结果,包括系统运行情况、资源利用情况、性能测试结果等。实验分析:对实验结果进行分析,总结实验步骤和结果,并提出改进建议。实验结论:对实验进行总结,对...
2023-10-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录