李瑞红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程序设计>第四周学习总结 教材学习内容总结 第六章 继承与多态 ·继承就是面向对象中,子类继承父类,避免重复的行为定义.重复再程序设计上是非常不好的信号 ...
随机推荐
- ndk-stack使用方法(转)
最近在mac上编译android 版本,各种崩溃让人蛋疼,网上学习了下ndk-stack使用方法. 自己备忘下: 1.运行终端. 跳转到你android sdk 目录 因为你的adb 在里面. 如 c ...
- 对话|人工智能先驱Yoshua Bengio
Bengio"> 今年1月份,微软收购深度学习初创公司Maluuba时,Maluuba公司德高望重的顾问.深度学习先驱Yoshua Bengio也接手了微软的人工智能研究顾问 ...
- 使用hexo,创建博客
下载hexo工具 1 npm install hexo-cli -g 下载完成后可以在命令行下生成一个全局命令hexo搭建博客可用thinkjs 创建一个博客文件夹 1 hexo init 博客文件夹 ...
- 【pic+js+gh】免费高速图床方案
本文用到的工具或网站 PicGo jsdelivr github 速度对比 Github的速度: jsdelivrCDN的速度: 下载PicGo 首先进入PicGo的下载地址 选择最新版本下载,根据自 ...
- 【h5ai】搭建服务器目录
在前几天,我帮人安装h5ai这个东西,结果直接踩坑,装了一个下午,打算自己也装一个,顺便写一下教程 最终效果演示: https://larsjung.de/h5ai/demo/ 服务器 服务器这里推荐 ...
- Java 设置Excel数据验证
数据验证是Excel 2013版本中,数据功能组下面的一个功能,在Excel2013之前的版本,包含Excel2010 Excel2007称为数据有效性.通过在excel表格中设置数据验证可有效规范数 ...
- 服务器推送 SSE 了解一下?
hello~亲爱的看官老爷们大家好~过完年第一周已经结束,是时候开始制定新的工作计划了.主要负责的项目是数据可视化平台,而使用中如果服务器能有推送能力让页端得到相关通知的话,就能实现很多功能上的优化. ...
- 2018-05-04 圣杯布局 and 双飞翼布局,display:flex
看到一个神奇的布局,啥都不说了 直接贴代码 要让main在中间,left在左边,可以通过Flex容器下的项目的属性“order”属性来设置:对于order属性:定义项目的排列顺序,越小越靠前,默认为0 ...
- ES6的函数
1,带参数默认值的函数 JS函数有个独特的行为:可以接受任意数量的参数,而无视函数声明的形参数量.未提供的参数会使用默认值来代替.实际传递的参数允许少于或多于正式指定的参数. 在ES6中可以直接在形参 ...
- 05 Linux目录速查表
/:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始 当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录 /b ...