实验四:类与对象的定义及使用

第一部分:理论知识学习

1.类与对象概念

 (1)类是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例。

  (2)对象:即数据,对象有三个特性,行为、状态、标识。

2.类与对象的关系

(1)类是对象,事物的描述和抽象,是具有相同属性和行为的对象集合。对象则是该类事物的实例。    

 (2)类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间 中。对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。

3.对象与对象变量的关系

(1).Java中想使用对象就必须先构造对象,并指定其初始状态。

4.通过实验掌握了预定义类的基本使用方法,熟悉Math类、String类、math类、Scanner  类、LocalDate类的常用API

5.掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、静态方法、main方法、方法参数的定义要求

(1)实例域:可将实例域定义为final,构建对象时必须初始化这样的域。

(2)静态域:绝大多数面向对象程序设计语言中,静态域被称为类域。如果将域定义为static,每个类中只有一个这样的域。而每个对象对于所有的实例域却都有自己的一份拷贝。

(3)静态方法:静态方法是一种不能向对象实时操作的方法。可以使用对象调用静态方法。

(4)构造器方法:构造器与类同名。构造器总是伴随着new操作符的执行被调用,而不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。

(5)更改器方法:调用更改器方法后对象的状态会改变。

(6)访问器方法:只访问对象而不修改对象的方法。

(7)main方法:main方法不对任何对象进行操作。静态的main方法将执行并创建程序所需要的对象。

6.重载

  多个方法有相同的名字、不同的参数、便产生了重载。Java允许重载任何方法,而不只是构造器方法。

7.

   Java允许使用包将类组织起来。借助包可以方便地组织自己的代码,并将自己的代码与别人提供的代码库分开管理。而且使用包可以确保类名的唯一性。

8.文档注释技术

包括类注释,方法注释,域注释,通用注释,包与概述注释等。

二.实验部分

1、实验目的与要求

(1) 理解用户自定义类的定义;

(2) 掌握对象的声明;

(3) 学会使用构造函数初始化对象;

(4) 使用类属性与方法的使用掌握使用;

(5) 掌握package和import语句的用途。

2、实验内容和步骤

实验1 测试以下程序,掌握文件输入输出程序设计技术(文件输入输出,教材61-62)

mport java.io.*;
import java.util.*;
public class FileWriteReadTest {
public static void main(String[] args) throws IOException{
//写入文件演示
PrintWriter out = new PrintWriter("myfile.txt");
out.println("姓名 高数 Java 数据结构 平均成绩 总成绩");
out.println("张三 20 30 40 0 0");
out.println("李四 50 60 70 0 0");
out.close();//输出完毕,需要close
//读入文件演示
Scanner in = new Scanner(new File("myfile.txt"));//为myfile.txt这个File创建一个扫描器in
int number = 1;//行号
System.out.println(in.nextLine());
while(in.hasNextLine()){//判断扫描器是否还有下一行未读取,该循环把文件的每一行都读出
String line = in.nextLine();//读出myfile.txt的下一行
System.out.print("第"+(++number)+"行的内容: ");
Scanner linescanner = new Scanner(line);//行内容建立扫描器
linescanner.useDelimiter(" ");//使用空格作为分隔符
String name = linescanner.next();
String math = linescanner.next();
String java = linescanner.next();
String ds = linescanner.next();
String avg = linescanner.next();
String total = linescanner.next();
System.out.println("name="+name+" math="+math+" java="+java+" ds="+ds+" avg"+avg+" total="+total);
}
in.close();//读入完毕,最后需要对其进行close。
}
}

实验2 导入第4章示例程序并测试。

测试程序1:

l  编辑、编译、调试运行程序4-2(教材104页);

l  结合程序运行结果,掌握类的定义与类对象的用法,并在程序代码中添加类与对象知识应用的注释;

l  尝试在项目中编辑两个类文件(Employee.java、 EmployeeTest.java ),编译并运行程序。

l  参考教材104页EmployeeTest.java,设计StudentTest.java,定义Student类,包含name(姓名)、sex(性别)、javascore(java成绩)三个字段,编写程序,从键盘输入学生人数,输入学生信息,并按以下表头输出学生信息表:

姓名      性别     java成绩

1  import java.util.Scanner;
2 public class StudentTest
3 {
4 @
5 public static void main(String[] args)
6 {
7 Student[] staff = new Student[2];
8 System.out.println("请输入学生的信息");
9
10 Scanner in = new Scanner(System.in);
11 for(int i=0;i<staff.length;i++) {
12 staff[i]=new Student(in.next(),in.next(),in.nextInt());
13 }
14 System.out.println("name"+" "+"sex"+" "+"javascore");
15
16 for (Student e : staff)
17 System.out.println(e.getName() +" "+e.getSex()+" "+e.getJavaScore());
18 }
19 }
20
21 class Student
22 {
23 private String name;
24 private String sex;
25 private int javascore;
26
27 public Student(String n, String s, int j)
28 {
29 name = n;
30 sex = s;
31 javascore =j;
32 }
33
34 public String getName()
35 {
36 return name;
37 }
38
39 public String getSex()
40 {
41 return sex;
42 }
43
44 public int getJavaScore()
45 {
46 return javascore;
47 }
48 }

测试程序2:

l  编辑、编译、调试运行程序4-3(教材116);

l  结合程序运行结果,理解程序代码,掌握静态域(netxtId)与静态方法(getNextId)的用法,在相关代码后添加注释;

l  理解Java单元(类)测试的技巧。

测试程序3:

l  编辑、编译、调试运行程序4-4(教材121);

l  结合程序运行结果,理解程序代码,掌握掌握Java方法参数的用法,在相关代码后添加注释;

测试程序4:

l  编辑、编译、调试运行程序4-5(教材129);

l  结合程序运行结果,理解程序代码,掌握Java用户自定义类的用法,掌握对象构造方法及对象使用方法,在相关代码后添加注释。

测试程序5:

l  编辑、编译、调试运行程序4-6、4-7(教材135);

l  结合程序运行结果,理解程序代码,掌握Java包的定义及用法,在相关代码后添加注释;

实验3  编写长方形类Rectangle与圆形类Circle,其中Rectangle类设置私有属性:width,length;Circle类设置私有属性radius。编写Rectangle类的带参构造函数Rectangle(int width,int length), Circle类的带参构造函数Circle(int radius),编写两个类的toString方法(Eclipse可自动生成)。上述2个类均定义以下方法:

求周长的方法public int getPerimeter()

求面积的方法public int getArea()

在main方法中完成以下任务:

(1)  输入1行长与宽,创建一个Rectangle对象;

(2)  输入1行半径,创建一个Circle对象;

(3)  将两个对象的周长加总输出,将两个对象的面积加总输出。

1 package four;
2 import java.util.Scanner;
3 public class 实验3 {
4 @SuppressWarnings("resource")
5 /**
6 * This program is the circumference and area of rectangles and circles.
7 * time 2018 9 24
8 * @author 李瑞红
9 */
10 public static void main(String[] args) {
11 Scanner sc = new Scanner(System.in);
12 System.out.println("请输入矩形的x y:");
13 int x = sc.nextInt();
14 int y = sc.nextInt();
15 System.out.println("矩形周长 "+Perimeter.getPerimeter(x,y));
16 System.out.println("矩形面积"+Area.getArea(x,y));
17
18 System.out.println("请输入圆的r:");
19 int r = sc.nextInt();
20 System.out.println("圆周长 "+Perimeter.getPerimeter(r));
21 System.out.println("圆面积"+Area.getArea(r));
22
23 double c = Perimeter.getPerimeter(x,y)+Perimeter.getPerimeter(r);
24 double s = Area.getArea(x,y)+Area.getArea(r);
25 System.out.println("矩形与圆的周长和为:"+c);
26 System.out.println("矩形与圆的面积和为:"+s);
27
28 }
29 }
30 class Perimeter{
31 public static double getPerimeter(double width, double height) {
32 return 2*(width + height);
33 }
34
35 public static double getPerimeter(int r) {
36 return 2*3.14*r;
37 }
38
39 }
40 class Area{
41 public static double getArea(double width, double height){
42 return width * height;
43 }
44
45 public static double getArea(int r) {
46 return 3.14*r*r;
47 }
48 }

  

总结:通过本次实验,我对类与对象的基础概念有了更深的了解,会使用构造函数初始化对象,并对使用类属性与方法进行了掌握, 学会了package和import语句的用途。掌握了用户自定义类的语法规则,如实例域、静态域、构造器方法、更改器方法、访问器方法、main方法、方法参数的定义要求。在本周的学习中,我深刻感受到通过阅读理解已有代码,学习其中的方法,将其转化为自己的知识,是很重要的能力。

李瑞红201771010111《面向对象程序设计(java)》第四周学习总结的更多相关文章

  1. 李瑞红 201771010111《面向对象程序设计(java)》第一周学习总结

    李瑞红 201771010111<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.c ...

  2. 李清华201772020113《面向对象程序设计(java)》第二周学习总结

    李清华201772020113<面向对象程序设计(java)>第二周学习总结 第一部分 理论知识 第三章 本章主要讲了java基本知识中的标识符,关键字,注释,以及数据类型,变量,运算符, ...

  3. 201771010118马昕璐《面向对象程序设计java》第八周学习总结

    第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...

  4. 201771010134杨其菊《面向对象程序设计java》第十周学习总结

    第8章泛型程序设计学习总结 第一部分:理论知识 主要内容:   什么是泛型程序设计                   泛型类的声明及实例化的方法               泛型方法的定义      ...

  5. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  6. 201771010134杨其菊《面向对象程序设计java》第八周学习总结

    第八周学习总结 第一部分:理论知识 一.接口.lambda和内部类:  Comparator与comparable接口: 1.comparable接口的方法是compareTo,只有一个参数:comp ...

  7. 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

    <面向对象程序设计Java>第八周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...

  8. 20145213《Java程序设计》第四周学习总结

    20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...

  9. 《Java程序设计》第四周学习总结

    20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...

随机推荐

  1. Eclipse无Server或者Tomcat8.5解决办法

    原文链接:https://blog.csdn.net/fangzicheng/article/details/78333567                                      ...

  2. BFC 浅谈

    写在前面 Block formatting context (块级格式化上下文) 页面文档由块block构成 每个block在页面上占据自己的位置使用新的元素构建BFC overflow:hidden ...

  3. 从赴美IPO绝迹 看那些烧成泡沫的互联网企业

    曾经,赴美上市是很多中国企业的终极梦想.然而在当下,随着中概股在美国股市股价的不断走低.中国赴美上市企业私有化速度的加快,大众才发现,原来美国股市并不是那么好混的.但不管怎样,赴美上市始终是一种荣耀. ...

  4. 阿里云https免费证书配置-包教会

      阿里云https免费证书配置-包教会-有需要请联系小编! 小编个人站点:https://www.itdog.site/ 小编微信号:wvqusrtg  

  5. Ta说:2016微软亚洲研究院第二届博士生论坛

    ​ "聚合多元人才创造无尽可能,让每一位优秀博士生得到发声成长机会"可以说是这次微软亚洲研究院博士生论坛最好的归纳了.自去年首次举办以来,这项旨在助力青年研究者成长的项目迅速得到了 ...

  6. 微服务SpringBoot总结

    什么是SpringBootSpringBoot是Spring项目中的一个子工程,与我们所熟知的Spring-framework 同属于spring的产品官方介绍:Spring Boot makes i ...

  7. 有点长的博客:Redis不是只有get set那么简单

    我以前还没接触Redis的时候,听到大数据组的小伙伴在讨论Redis,觉得这东西好高端,要是哪天我们组也可以使用下Redis就好了,好长一段时间后,我们项目中终于引入了Redis这个技术,我用了几下, ...

  8. docker save和load将本地镜像上传AWS

    今天在AWS云主机上部署Grafana,发现无法使用私有仓库,于是,尝试了下docker save和docker load.着实很好用,简单记录下: docker save用法: Usage: doc ...

  9. Kali虚拟机的扩容经历

    Kali虚拟机的扩容经历 0x01 起因 更新了一下软件包,竟然提示我空间不足. 升级了 687 个软件包,新安装了 82 个软件包,要卸载 0 个软件包,有 8 个软件包未被升级. 需要下载 1,5 ...

  10. 关于Spring和SpringMVC的总结

    1.Spring中AOP的应用场景.AOP原理.好处? 答:AOP:Aspect Oriented Programming面向切面编程:用来封装横切关注点,具体可以在下面场景中使用: Authenti ...