当前位置: 首页 > 编程日记 > 正文

常惠琢 201771010102《面向对象程序设计(java)》第七周学习总结

实验七 继承附加实验

实验时间 2018-10-11

1、实验目的与要求

1)进一步理解4个成员访问权限修饰符的用途;

2)掌握Object类的常用API用法;

3)掌握ArrayList类用法与常用API

4)掌握枚举类使用方法;

5)结合本章知识,理解继承与多态性两个面向对象程序设计特征,并体会其优点;

6)熟练掌握Java语言中基于类、继承技术构造程序的语法知识(ch1-ch5)

7)利用已掌握Java语言程序设计知识,学习设计开发含有1个主类、2个以上用户自定义类的应用程序。

2、实验内容和步骤

实验1  补充以下程序中主类内main方法体,以验证四种权限修饰符的用法。

public class TEST1 {

private String t1 = "这是TEST1的私有属性";

public String t2 = "这是TEST1的公有属性";

protected String t3 = "这是TEST1受保护的属性";

String t4 = "这是TEST1的默认属性";

private void tese1() {

System.out.println("我是TEST1用private修饰符修饰的方法");

}

public void tese2() {

System.out.println("我是TEST1用public修饰符修饰的方法");

}

protected void tese3() {

System.out.println("我是TEST1用protected修饰符修饰的方法");

}

void tese4() {

System.out.println("我是TEST1无修饰符修饰的方法");

}

}

public class TEST2 extends TEST1{

private String e1 = "这是TEST2的私有属性";

public String e2 = "这是TEST2的公有属性";

protected String e3 = "这是TEST2受保护的属性";

String e4 = "这是TEST2的默认属性";

public void demo1() {

System.out.println("我是TEST2用public修饰符修饰的方法");

}

private void demo2() {

System.out.println("我是TEST2用private修饰符修饰的方法");

}

protected void demo3() {

System.out.println("我是TEST2用protected修饰符修饰的方法");

}

void demo4() {

System.out.println("我是TEST2无修饰符修饰的方法");

}

}

public  class  Main {

public static void main(String[] args) {

TEST2 test2 = new TEST2();

/*在下面分别调用 demo1 demo2 demo3 demo4 test1 test2 test3 test4方法

和t1 t2 t3 t3 e1 e2 e3 e4属性,好好理解继承和权限修饰符的用法与区别*/

test2.demo1();

test2.demo3();

String e2=test2.e2;

System.out.println(e2);

}

}

实验2  第五章测试程序反思,继承知识总结。

测试程序1

Ÿ 编辑、编译、调试运行教材程序5-85-95-10(教材174-177页);

Ÿ 结合程序运行结果,理解程序代码,掌握Object类的定义及用法;

package equals;/*** 这个程序演示了等值方法  * @version 1.12 2012-01-26* @author Cay Horstmann*///实现了Employee类和Manager类的equals、hashCode和toString方法
public class EqualsTest
{public static void main(String[] args){Employee alice1 = new Employee("Alice Adams", 75000, 1987, 12, 15);Employee alice2 = alice1;Employee alice3 = new Employee("Alice Adams", 75000, 1987, 12, 15);Employee bob = new Employee("Bob Brandson", 50000, 1989, 10, 1);System.out.println("alice1 == alice2: " + (alice1 == alice2));System.out.println("alice1 == alice3: " + (alice1 == alice3));System.out.println("alice1.equals(alice3): " + alice1.equals(alice3));System.out.println("alice1.equals(bob): " + alice1.equals(bob));System.out.println("bob.toString(): " + bob);Manager carl = new Manager("Carl Cracker", 80000, 1987, 12, 15);Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15);boss.setBonus(5000);System.out.println("boss.toString(): " + boss);System.out.println("carl.equals(boss): " + carl.equals(boss));System.out.println("alice1.hashCode(): " + alice1.hashCode());System.out.println("alice3.hashCode(): " + alice3.hashCode());System.out.println("bob.hashCode(): " + bob.hashCode());System.out.println("carl.hashCode(): " + carl.hashCode());}
}

package equals;import java.time.*;
import java.util.Objects;public class Employee
{private String name;private double salary;private LocalDate hireDay;public Employee(String name, double salary, int year, int month, int day){this.name = name;this.salary = salary;hireDay = LocalDate.of(year, month, day);}public String getName(){return name;}public double getSalary(){return salary;}public LocalDate getHireDay(){return hireDay;}public void raiseSalary(double byPercent){double raise = salary * byPercent / 100;salary += raise;}public boolean equals(Object otherObject){// 快速测试,以查看对象是否相同if (this == otherObject) return true;// 如果explicit的参数为null,则必须返回falseif (otherObject == null) return false;//如果类不匹配,它们就不能相等。 if (getClass() != otherObject.getClass()) return false;// 现在我们知道另一个对象是非null的Employee类Employee other = (Employee) otherObject;// 测试字段是否具有相同的值return Objects.equals(name, other.name) && salary == other.salary && Objects.equals(hireDay, other.hireDay);}public int hashCode(){return Objects.hash(name, salary, hireDay); }public String toString(){return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay+ "]";}
}

package equals;public class Manager extends Employee
{private double bonus;public Manager(String name, double salary, int year, int month, int day){super(name, salary, year, month, day);bonus = 0;}public double getSalary(){double baseSalary = super.getSalary();return baseSalary + bonus;}public void setBonus(double bonus){this.bonus = bonus;}public boolean equals(Object otherObject){if (!super.equals(otherObject)) return false;Manager other = (Manager) otherObject;// Suff.Enter检查这个和其他属于同一个类。  return bonus == other.bonus;}public int hashCode(){return java.util.Objects.hash(super.hashCode(), bonus);}public String toString(){return super.toString() + "[bonus=" + bonus + "]";}
}

测试程序2

Ÿ 编辑、编译、调试运行教材程序5-11(教材182页);

Ÿ 结合程序运行结果,理解程序代码,掌握ArrayList类的定义及用法;

package arrayList;import java.util.*;/*** 这个程序演示了ARAYLIST类.* @version 1.11 2012-01-26* @author Cay Horstmann*/
public class ArrayListTest
{public static void main(String[] args){// 用三名员工对象填写员工数组列表 ArrayList<Employee> staff = new ArrayList<>();staff.add(new Employee("Carl Cracker", 75000, 1987, 12, 15));staff.add(new Employee("Harry Hacker", 50000, 1989, 10, 1));staff.add(new Employee("Tony Tester", 40000, 1990, 3, 15));// 把每个人的薪水提高5% for (Employee e : staff)e.raiseSalary(5);//打印所有员工对象的信息 for (Employee e : staff)System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay="+ e.getHireDay());}
}

package arrayList;import java.time.*;public class Employee
{private String name;private double salary;private LocalDate hireDay;public Employee(String name, double salary, int year, int month, int day){this.name = name;this.salary = salary;hireDay = LocalDate.of(year, month, day);}public String getName(){return name;}public double getSalary(){return salary;}public LocalDate getHireDay(){return hireDay;}public void raiseSalary(double byPercent){double raise = salary * byPercent / 100;salary += raise;}
}

测试程序3

Ÿ 编辑、编译、调试运行程序5-12(教材189页);

Ÿ 结合运行结果,理解程序代码,掌握枚举类的定义及用法;

package enums;import java.util.*;/*** 这个程序演示枚举类型 .* @version 1.0 2004-05-24* @author Cay Horstmann*/
public class EnumTest
{  // 所有枚举类型都是Enum的子类public static void main(String[] args){  Scanner in = new Scanner(System.in);System.out.print("Enter a size: (SMALL, MEDIUM, LARGE, EXTRA_LARGE) ");String input = in.next().toUpperCase();Size size = Enum.valueOf(Size.class, input);//将size设置成Size.input       System.out.println("size=" + size);System.out.println("abbreviation=" + size.getAbbreviation());if (size == Size.EXTRA_LARGE)   //判断语句    System.out.println("Good job--you paid attention to the _.");      }    
}    enum Size
{SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");private Size(String abbreviation) { this.abbreviation = abbreviation; }public String getAbbreviation() { return abbreviation; }private String abbreviation;
}

实验3采用个人账号登录https://pintia.cn/完成《2018秋季西北师范大学面向对象程序设计(Java)(ch1-ch5)测试题2》,测试时间60分钟;

实验4: 课后完成实验3未完成的测试内容。

实验总结:

    这次实验让我在前一次实验的基础上对继承有了进一步的了解,但通过测试发现了很多的问题,我会利用闲暇时间进一步的学习这一章和后面的内容,同时复习前面的章节内容,希望对Java可以有更深一步的了解。

转载于:https://www.cnblogs.com/hongyanohongyan/p/9784758.html

相关文章:

nginx php站点配置文件,php网站修改默认访问文件的nginx配置

搭建好lnmp后&#xff0c;有时候并不需要直接访问index.php&#xff0c;配置其他的默认访问文件比如index.html这时候需要配置一下nginx才能访问到你想要设置的文件直接上代码&#xff0c;如下是我的配置的一份简单的nginx到php-fpm的站点&#xff0c;该站点默认访问目录/ecmob…

CMake 打包已经存在的动态库生成 target

一. 背景 在 CMakeLists.txt 中&#xff0c;某模块 A 通过 add_subdirectory 引入模块 B &#xff0c;模块 B 通过 add_subdirectory 引入模块 C。模块 C 里面本身就是一个开源的动态库&#xff0c;比如 libtask。目的想要将 C 模块打包成一个 Target &#xff0c;以便在 A 模…

Ruby: Ruby脚本在测试中的使用

如果存在以下的场景&#xff1a;1. 放置在公司的读报机服务器&#xff0c;每天都是开启的&#xff1b;2. 读报机每天下载报纸&#xff0c;一旦成功/失败&#xff0c;就会有相应的记录生成在某个xml文件中&#xff1b;3. 现在有过去一年的读报机下载xml&#xff0c;大约有200多份…

cocos2d-xna for win8源代码轻松移植cocos-xna for wp游戏

无意间看到杨哥弄了一个cocos2d-xna for win8出来可惜没有放出源代码&#xff0c;我试着要了一下结果他没理我&#xff0c;各种画圈圈。 那我只好自己弄一个了&#xff0c;源代码放出大家供交流学习使用&#xff0c;像杨哥说的一样就是一点小bug很容易该成把wp改成win8版的&…

Oct 2018

Tasks motion planning code in Autonomous DrivingUdacity RoboticsNDCoursera RoboticsMotion PlanningEstimationF1/10 racecarProject Overview 1. Mooc Udacity RoboticsND: project 3 Coursera Robotics Motion Planning HomeworkNote --> Post  2. Leetcode ☆☆ …

Springboot+mybatisplus搭建新闻管理系统

模块化实现&#xff0c;一周轻松搭建 前端 后端 项目源码及其教程回复已三连备注邮箱领取

SQL Server存储过程输入参数使用表值

在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使比较困难的&#xff0c;可能需要很多的逻辑处理将这些表数据作为字符串或者XML传入。 在2008中提供了表值参数。使用表值参数&#xff0c;可以不必创建临时表或许多参数&#xff0c;即可向 Transact-SQL 语句…

ef core mysql 字符集,EF Core 基础知识

数据库连接字符串在 ASP.NET Core 添加配置片段&#xff1a;{"ConnectionStrings": {"BloggingDatabase": "Server(localdb)\\mssqllocaldb;DatabaseEFGetStarted.ConsoleApp.NewDb;Trusted_ConnectionTrue;"}}然后&#xff0c;配置对应的DbCont…

模板特化,全特化,偏特化,全部特化,部分特化的含义

模板特化&#xff0c;任何针对模板参数进一步进行条件限制设计的特化版本。《泛型思维》 全特化就是全部特化&#xff0c;即针对所有的模板参数进行特化。《c primer》偏特化就是部分特化&#xff0c;即针对部分模板参数进行特化。《c primer》全特化和偏特化的定义不是很严格&…

PHP中单例模式:三私一公是什么?

PHP中单例模式&#xff1a;三私一公是什么&#xff1f; 三私一公 私有化静态属性 私有化构造方法 私有化克隆方法 公有化静态方法 ​​​​ 转载于:https://www.cnblogs.com/phpisfirst/p/9792545.html

php 缓存模块,PHP缓存之模块缓存(APC)_PHP教程

PHP缓存之模块缓存(APC)APC是Alternative PHP Cache的简称&#xff0c;是 PHP 的一个免费公开的优化代码缓存。它用来提供免费&#xff0c;公开并且强健的架构来缓存和优化 PHP 的中间代码。1、PHP配置APC开启APC模块&#xff0c;需要将 extensionphp_apc.dll 前面的注释去掉即…

pta 考试座位

L1-005 考试座位号 (15 分) 每个 PAT 考生在参加考试时都会被分配两个座位号&#xff0c;一个是试机座位&#xff0c;一个是考试座位。正常情况下&#xff0c;考生在入场时先得到试机座位号码&#xff0c;入座进入试机状态后&#xff0c;系统会显示该考生的考试座位号码&#…

JSDoc那些事

几天工作上需要文档化一些Javascript东西&#xff0c;所以在找一些JS文档化工具&#xff0c;以下分析几种工具。 1.JSDoc-toolkit 一开始还想用这个工具&#xff0c;但后来在解析生成文档时候&#xff0c;出现了很严重的错误&#xff0c;还存在其他问题。 问题1&#xff1a;闭包…

WindowType 属性

WindowType 属性 指定一个表单集或表单在显示或用DO FORM来运行时的行为.在设计和运行时可供使用. Object.WindowType[ nType] 返回值 nType对于表单集&#xff0c;WindowType 属性的设置如下&#xff1a; 设置说明 0 无模式。 1 模式。其它表单(非该表单集中的)不能变为活动…

Excel VBA附合导线平差自动计算表

这是6,7年前做的一个excel vba自动计算附合导线平差的表格。 对于做测绘的朋友来说&#xff0c;附合导线平差是最基础的技能&#xff0c;目前来说&#xff0c;能平差的软件和工具也很多&#xff0c;像南方的平差易&#xff0c;科傻平差、清华三维平差等&#xff0c;但这些软件操…

结构体解决念数字问题

L1-007 念数字 (10 分) 输入一个整数&#xff0c;输出每个数字对应的拼音。当整数为负数时&#xff0c;先输出fu字。十个数字对应的拼音如下&#xff1a; 0: ling 1: yi 2: er 3: san 4: si 5: wu 6: liu 7: qi 8: ba 9: jiu输入格式&#xff1a; 输入在一行中给出一个整数&…

Eclipse NDK 配置,无需安装Cygwin

Eclipse NDK 配置&#xff0c;无需安装Cygwin Eclipse NDK 配置&#xff0c;不用安装Cygwin 文章转自http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.html一、关于NDK: NDK全称&#xff1a;Native Development Kit。 1、NDK是一系列工具的集合。 NDK提供了一系…

php裁剪图片白边,php生成缩略图填充白边(等比缩略图方案)

网站上传图片后生成缩略图应该是非常常用的功能了&#xff0c;通常来讲为了网站显示美观&#xff0c;缩略图会是同样尺寸&#xff0c;比如最近笔者做的一个站点&#xff0c;缩略图规格要求都是160120。但是如果上传的图片比例和缩略图不一致&#xff0c;直接缩放的话就会导致图…

PHP 平分数组

1 <?php2 /**3 *一个整数数组&#xff0c;长度为n&#xff0c;将其分为m 份&#xff0c;使各份的和相等&#xff0c;求m 的最大值4 *比如{3&#xff0c;2&#xff0c;4&#xff0c;3&#xff0c;6} 可以分成{3&#xff0c;2&#xff0c;4&#xff0c;3&#xf…

Shoot the Bullet(ZOJ3229)(有源汇上下界最大流)

描述 ensokyo is a world which exists quietly beside ours, separated by a mystical border. It is a utopia where humans and other beings such as fairies, youkai(phantoms), and gods live peacefully together. Shameimaru Aya is a crow tengu with the ability to …

深入理解jQuery插件开发【转】

如果你看到这篇文章&#xff0c;我确信你毫无疑问会认为jQuery是一个使用简便的库。jQuery可能使用起来很简单&#xff0c;但是它仍然有一些奇怪的地方&#xff0c;对它基本功能和概念不熟悉的人可能会难以掌握。但是不用担心&#xff0c;我下面已经把代码划分成小部分&#xf…

L1-008 求整数段和 (C++)

给定两个整数A和B&#xff0c;输出从A到B的所有整数以及这些数的和。 输入格式&#xff1a; 输入在一行中给出2个整数A和B&#xff0c;其中−100≤A≤B≤100&#xff0c;其间以空格分隔。 输出格式&#xff1a; 首先顺序输出从A到B的所有整数&#xff0c;每5个数字占一行&a…

matlab 迭代 混沌与分形实验报告,实验四 函数的迭代混沌与分形.doc

实验四 函数的迭代混沌与分形.doc 实验四函数的迭代、混沌与分形实验目的1认识函数的迭代&#xff1b;2了解混沌和分形迭代在数值计算中占有很重要的地位,了解和掌握它是很有必要的本实验将讨论用NEWTON迭代求方程根的问题,以及迭代本身一些有趣的现象1基本理论11迭代的概念给定…

小霸王双核/四核手机最新参数曝光

2019独角兽企业重金招聘Python工程师标准>>> 此前爆料出小霸王出手机&#xff0c;今天又有新消息啦。 现在又有消息人士给出了小霸王手机最新的参数情况&#xff0c;其厚度为9.8mm&#xff0c;配备的是4.5寸夏普IPS材质触摸屏&#xff0c;分辨率为960x540像素&#…

聊一聊跨域,Vue向Django请求数据的一些问题

1.做前后端分离 前端使用Vue程序&#xff0c;后端使用Django配合rest-framework。 那么前端Vue通过API接口拿到数据会出现跨域的问题&#xff0c;JSONP只是在get中会用到的&#xff0c;所以这里使用cors来解决一下。 一个Vue程序通过ajax或者axios发送一个请求过来&#xff0c;…

php配置控制器和视图位置,视图控制器

视图控制器视图控制器是连接控制器和模板的桥梁, 更是对模板的强大扩展基本用法视图控制器文件夹位于 app\web\views 目录下&#xff0c; 视图控制器的名称是和控制器的名称相对应的, 并在结尾加上View, Main控制器的默认的视图控制器类名为MainView&#xff0c;内容如下:names…

L1-016 查验身份证 (15 分)

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0c;8&#xff0c;4&#xff0c;2&#xff0c;1&am…

中国互联网的十一种盈利模式

盈利模式一&#xff1a;在线广告 最主要最常见的网络在线盈利模式&#xff0c;国内比较好的是各大门户网站(新浪&#xff0c;搜狐等)&#xff0c;也包括行业门户&#xff0c;而且大多数个人网站的盈利模式也是这样&#xff0c;靠挂别人的广告生存。 新新兴的在线短视频网站…

grid布局初试

/*这是HTML*/<!DOCTYPE html> <html><head><meta charset"utf-8" /><title>main</title><link rel"stylesheet" href"css/header.css" /><link rel"stylesheet" href"css/aside.cs…

matlab文件启动位置,matlab中uigetfile()设置默认路径

每次使用uigetfile()函数选择文件路径&#xff0c;默认都是从current folder中选择数据文件&#xff0c;而current folder路径又不是数据文件&#xff0c;那么每次都需要选择径路好几步&#xff0c;繁琐的很。想通过设置current folder路径&#xff0c;使每次运行时uigetfile直…