20175316盛茂淞 2018-2019-2《Java程序设计》第4周学习总结
20175316盛茂淞 2018-2019-2《Java程序设计》第4周学习总结
教材学习内容总结
第五章 子类与继承
一.继承
- 1.继承定义:避免多个类间重复定义共同行为
- 2.子类与父类:
父类:
- 对有着 共同特性 的多类事物,进行再 抽象 成一个类,这个类就是多类事物的父类
- 父类的意义在于可以抽取多类事物的共性
子类既可以是一个子类,也可以是一个父类;父类既可以是一个父类,也可以是一个子类
在Java中只有 单一继承 ,即 子类只能继承一个父类
子类与父类间会有 is-a 的关系( 子类 is a 父类 )
public class RPG1
{
public static void main(String[] args)
{
demoSwordsMan1();
demoMagician1();
}
static void demoSwordsMan1()
{
SwordsMan1 swordsMan1 = new SwordsMan1();
swordsMan1.setName("Justin");
swordsMan1.setLevel(1);
swordsMan1.setBlood(200);
System.out.printf("剑士:(%s,%d,%d)%n",swordsMan1.getName(),swordsMan1.getLevel(),swordsMan1.getBlood());
}
static void demoMagician1()
{
Magician1 magician1 = new Magician1();
magician1.setName("Monica");
magician1.setLevel(1);
magician1.setBlood(100);
System.out.printf("魔法师:(%s,%d,%d)%n",magician1.getName(),magician1.getLevel(),magician1.getBlood());
}
}
- 3.多态与is-a
- IS-A译为“是一种”,子类与父类就是一种“IS-A”的关系。例如上述代码,SwordsMan是一种Role(即SwordsMan is a Role)。
- 注意建立对象时候的顺序,应该遵守从右往左读的原则(这样才符合IS-A原则):
SwordsMan swordsman=new SwordsMan;
Role role=new SwordsMan();
- 在java中有且仅有一种继承父类
- 赋值时:如果用父类建立了一个对象实例,那么要将这个对象赋给它的子类时,需要进行强制转eg:
Role role1 = new SwordsMan();
SowrdsMan swordsMan = (SwordsMan) role1;
4.重新定义行为
如果子类和父类的定义函数名相同会出现函数覆盖的情况。
多个类中功能相同但是功能主体不同,也可以抽取在父类中。5.抽象方法、抽象类
上述在父类中的fight()函数没有撰写程序代码,用abstract关键词标识,public abstract class roleplay
表示定义不完整的类,就不能建立实例。
子类必须覆盖父类中的所有抽象方法,才能建立子类调用。6.protected成员
protected与public、private类似都是权限关键字。如果成员被定义为protected的话在相同的包中可以直接存取。7.super关键字
修改子类中已经存在的内容时,可以在调用方法前加上super关键字。
在使用super关键字调用父类方法,不能定义为private(只限定在类内中使用)注意
(1)关键字extends是为了扩充和继承父类的行为。
(2)在java中一个子类只能继承一个父类。
(3)在判断操作对象是“哪一种”的时候,检查语法的逻辑是否正确,方式是从=右边往左边读:右边是不是一种左边呢(右边类是不是左边类的子类)?
(4)在重新定义中,子类必须撰写与父类方法相同的签署,如果因为疏忽打错字就会完全不同(虽然编译会成功,但是行为会完全不同),但在JDK5后
(5)标注@Override,表示要求编译程序检查是否真的重新定义父类中某个方法。
(6)子类如果继承抽象类,对于抽象方法有两种做法,一种是继续标注该方法为abstract(必须在class前标注abstract),另一种就是操作抽象方法,如果都没有实施,则会出现编译错误。
教材学习中的问题和解决过程
- 问题一:
关于子类继承抽象类有些不太清楚,课本上说继续标识子类是一种抽象类或者说操作抽象方法。关于如何操作抽象方法小小的做了一个尝试:
abstract class role{
abstract void speak();
}
class student extends role {
void speak(){
System.out.println("i am just a student");
}
}
public class abvoid {
public static void main(String[] args) {
student stu1=new student();
stu1.speak();
// TODO code application logic here
}
}
- 结果
调试与运行截图
- 编译
- 上传码云
上周考试错题情况
- 题目1
在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15
1. 修改代码中的stu的number为自己学号的后四位,package那一行改为你的姓名首字母缩写,比如刘德华同学改为package ldh
2. 其他需要修改的自行修改,提交运行结果截图
出现问题:编译不成功:找不到或无法加载主类项
解决办法:
注意编译命令为 javac sms(文件夹)/ Example4_15.java
运行命令 java sms/ Example4_15运行截图
题目2
参考http://www.cnblogs.com/rocedu/p/6766748.html 编程实现输入平方倒置的功能
命令行传入数组,比如类名为ArraySquareReverse, java ArraySquareReverse 1 2 3 4 输出16 9 4 1
提交运行结果的截图(至少五张),注意测试正常,异常,边界情况,输入参数最后一个是你的学号后2位
- 出现问题:类名必须和文件名一样
- 编译运行结果
(1)例子
(2)参数最后一个是我的学号后2位 16
(3)参数有一个是0
(4)参数有负数 - 运行结果
(1)
(2)
(3)
(4)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |
本周学习感受
本周测试题目二较难,需要用到各种结构体和数组,难度较大,我是在上网查阅资料后才编写出来,仍需多加练习。
这两周的学习内容中有很多的概念,书上的例子也有很多需要我们去实践,虽然说课本上的代码也敲了,知识内容都理解了,但是感觉学的还是不踏实,对于java面向对象这一块还是不能很好的应用。只能说学的多而不精,看上去每个概念都学了,但是应用方面有很大的欠缺。希望以后自己慢慢地实践过程中再学习体会吧。
我慢慢的感觉学习Java已经变成了每天的一项日常,会不知不觉的在空闲的时候学习一会Java,慢慢的也体会到了Java的乐趣,我相信我会带着这种乐趣一直坚持下去
20175316盛茂淞 2018-2019-2《Java程序设计》第4周学习总结的更多相关文章
- 20175316盛茂淞-Java第1周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java入门 1.Java简介(地位,特点) 2.安装JDK,设置系统环境 3.编译J ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验五 《网络安全与编程》 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验五 <网络安全与编程> 实验报告 一.实验报告封面 课程:Java程序设计 班级:1753班 姓名:盛 ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第9周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第9周学习总结 教材学习内容总结 下载安装MySQL数据库管理系统. 学习<Java程序设计>第十一章MyS ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第8周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十五章 泛型 -- 主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据 ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第7周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第7周学习总结 教材学习内容总结 第八章 常用实用类 一.String类 String类在java.lang包中,jav ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第6周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第6周学习总结 教材学习内容总结 第7章 内部类与异常类 1.使用 try.catch Java中所有信息都会被打包为对 ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第5周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 第六章 接口与实现. 何谓接口 接口:书上没有明确地给出接口的定义,我理解的接口就是一 ...
随机推荐
- python导入requests库一直报错原因总结 (文件名与库名冲突)
花了好长时间一直在搞这个 源代码: 一直报如下错误: 分析原因: 总以为没有导入requests库,一直在网上搜索各种的导入库方法(下载第三方的requests库,用各种命令工具安装),还是报错 后来 ...
- 八皇后(DFS)
题目描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. 对于某个满足要求的8 ...
- SQLServer数据库镜像配置
目录 一.目标...2 二.前提条件.限制和建议...2 三.设置概述...2 四.安装Sql Server 2008 enterprise X64.3 4.1.安装.NET3.5.3 4.2.安装时 ...
- QTP 学习 - 对象库
QTP的关键字视图和专家视图 1.Keyword view(关键字视图) 在录制脚本的过程中,用户执行的每一个步骤,在关键字视图中记录为一行. 关键字视图直观有效,用户可以很清楚的看到被录制对象的录制 ...
- python至winreg模块
_winreg模块在python3中已经改名了 https://blog.csdn.net/zhangxiaoyang0/article/details/72236305?fps=1&loca ...
- 去“BAT”这样面试,拿到offer的几率是80%(转)
一.概述面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会这 ...
- PAT甲级
https://www.cnblogs.com/jlyg/p/7525244.html 哇咔咔,瞧人家都刷完甲级130道题了,哼,有什么了不起的,考前刷完,再刷的比你多,哼,照样吊打. 沙耶加油! 一 ...
- ArcGIS自定义脚本-通过txt/excel/dbf/table生成多边形要素类
ArcGIS自定义脚本-通过txt/excel/dbf/table生成多边形要素类 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:读取文本文件,常见多边形要素 ...
- ubuntu 从零安装tf-serving环境和opencv
参考官网:https://www.tensorflow.org/serving/setup 首先是安装gprc: pip install grpcio 然后发现没有安装pip,报错:sudo: pip ...
- combox省市县三级联动
/** * Name 获取省份(初始化) */ function showProvince(id1, id2, id3) { var paramData = {}; $.ajax({ url: osp ...