李瑞红201771010111《面向对象程序设计(java)》第四周学习总结
实验四:类与对象的定义及使用
第一部分:理论知识学习
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)》第四周学习总结的更多相关文章
- 李瑞红 201771010111《面向对象程序设计(java)》第一周学习总结
李瑞红 201771010111<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.c ...
- 李清华201772020113《面向对象程序设计(java)》第二周学习总结
李清华201772020113<面向对象程序设计(java)>第二周学习总结 第一部分 理论知识 第三章 本章主要讲了java基本知识中的标识符,关键字,注释,以及数据类型,变量,运算符, ...
- 201771010118马昕璐《面向对象程序设计java》第八周学习总结
第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...
- 201771010134杨其菊《面向对象程序设计java》第十周学习总结
第8章泛型程序设计学习总结 第一部分:理论知识 主要内容: 什么是泛型程序设计 泛型类的声明及实例化的方法 泛型方法的定义 ...
- 201771010134杨其菊《面向对象程序设计java》第九周学习总结
第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...
- 201771010134杨其菊《面向对象程序设计java》第八周学习总结
第八周学习总结 第一部分:理论知识 一.接口.lambda和内部类: Comparator与comparable接口: 1.comparable接口的方法是compareTo,只有一个参数:comp ...
- 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结
<面向对象程序设计Java>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...
- 20145213《Java程序设计》第四周学习总结
20145213<Java程序设计>第四周学习总结 教材学习内容总结 本周任务是学习面向对象的继承.接口以及之后的如何活用多态.(还真是路漫漫其修远兮啊!)教材也是延续上周艰深晦涩的语言风 ...
- 《Java程序设计》第四周学习总结
20145224-陈颢文 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...
随机推荐
- python设置检查点简单实现
说检查点,其实就是对过去历史的记录,可以认为是log.不过这里进行了简化.举例来说,我现在又一段文本.文本里放有一堆堆的链接地址.我现在的任务是下载那些地址中的内容.另外因为网络的问题或者网站的问题, ...
- VSCode通过git上传代码
最近也是在不断学习中,接触VSCode时间不长,很多东西也是在学习,所以这里记录下VSCode通过git上传代码,以防之后忘记. 我用的的VSCode版本 起初建立仓库的时候通过命令:(这个是我网上搜 ...
- Yii的自带缓存的使用
Yii的自带缓存都继承CCache 类, 在使用上基本没有区别缓存基础类 CCache 提供了两个最常用的方法:set() 和 get().要在缓存中存储变量 $value,我们选择一个唯一 ID 并 ...
- 带你学习Javascript中的函数进阶(一)
1. 函数的定义和调用 1.1 函数的定义方式 函数声明方式function关键字(命名函数) 函数表达式(匿名函数) new Function() var fn = new Function('参数 ...
- AVCaptureInput和AVCaptureOutput子类介绍
AVCaptureInput AVCaptureDeviceInput:用于从AVCaptureDevice对象捕获数据. AVCaptureScreenInput:从macOS屏幕上录制的一种捕获输 ...
- 7-19 计算有n个字符串中最长的字符串长度 (40 分)
编写程序,用于计算有n(1<n<10)个字符串中最长的字符串的长度.前导空格不要计算在内! 输入格式: 在第一行中输入n,接下的每行输入一个字符串 输出格式: 在一行中输出最长的字符串的长 ...
- 2020年,大厂常问iOS面试题汇总!
Runloop & KVO runloop app如何接收到触摸事件的 为什么只有主线程的runloop是开启的 为什么只在主线程刷新UI PerformSelector和runloop的关系 ...
- Nginx 推流 拉流 --- 点播直播
1. 准备环境 安装操作系统Cenos 配置yum源 yum:https://developer.aliyun.com/mirror/ Nginx依赖 gcc-c++ zlib pcre openss ...
- 【python pip】一招解决pip下载过慢问题
目录 概述 壹:问题描述 贰:解决过程 一.问题分析 二.问题解决 方法一:下载时加入参数-i [镜像源地址] 方法二:设置源 三.国内镜像源地址 叁:作者有话 作者 概述 在我们经常使用pip安装插 ...
- 数组去重--hash方法
hash方法我以前百度找到的,经常用性能好速度快,本文章主要是一步步解释hash方法的过程(其实没多少步) 在这里就能看出每个自定义下标都是独一无二的,其实就相当于数组arr已经去重了 剩下我们就需要 ...