教材内容总结

这次我们学习的还是两章的内容,学习任务量跟上次比的话大体上来讲是差不多的。

继承与多态

继承

继承也符合DRY(Don't Repeat Yourself)原则

Role role1 = new SwordsMan()

SwordsMan swordsman = role1; //x

SwordsMan swordsman = (SwordsMan)role1; //ok

Java中只有单一继承,也就是只能有一个父类

要实现C++中的多重继承,要使用第七章中的「接口(Interface)」

多态

继承可以复用代码,更大的用处是实现「多态」

封装是继承的基础,继承是多态的基础

「用父类声明对象引用,用子类生成对象」就有了多态

覆盖(Override)

区分重载(Overload)

抽象方法、抽象类

abstract

Java中有抽象方法的类一定是抽象类,但抽象类中的方法不一定都是抽象方法

抽象类不能使用new生成对象。

接口与多态

接口

接口中的public abstract可以省略

接中可以使用extends继承接口,并且可以继承多个接口

匿名内部类与Lambda

JDK8 前在匿名内部类中访问局部变量,则该局部变量必须为final

教材中的问题和解决

问题一关于自身idea的问题

在第三天的时候我的idea出了问题,无论编写什么程序都不能进行编译,再后来我发现是class出了问题,所谓我就上网上搜索了关于java中class没有的情形,最终找到了答案。

Sources 一般用于标注类似 src 这种可编译目录。有时候我们不单单项目的 src 目录要可编译,还有其他一些特别的目录也许我们也要作为可编译的目录,就需要对该目录进行此标注。只有 Sources 这种可编译目录才可以新建 Java 类和包,这一点需要牢记。

Tests 一般用于标注可编译的单元测试目录。在规范的 maven 项目结构中,顶级目录是 src,maven 的 src 我们是不会设置为 Sources 的,而是在其子目录 main 目录下的 java 目录,我们会设置为 Sources。而单元测试的目录是 src - test - java,这里的 java 目录我们就会设置为 Tests,表示该目录是作为可编译的单元测试目录。一般这个和后面几个我们都是在 maven 项目下进行配置的,但是我这里还是会先说说。从这一点我们也可以看出 IntelliJ IDEA 对 maven 项目的支持是比彻底的。

Resources 一般用于标注资源文件目录。在 maven 项目下,资源目录是单独划分出来的,其目录为:src - main -resources,这里的 resources 目录我们就会设置为 Resources,表示该目录是作为资源目录。资源目录下的文件是会被编译到输出目录下的。

Test Resources 一般用于标注单元测试的资源文件目录。在 maven 项目下,单元测试的资源目录是单独划分出来的,其目录为:src - test -resources,这里的 resources 目录我们就会设置为 Test Resources,表示该目录是作为单元测试的资源目录。资源目录下的文件是会被编译到输出目录下的。

Excluded 一般用于标注排除目录。被排除的目录不会被 IntelliJ IDEA 创建索引,相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。

通过上面的介绍,我们知道对于非 maven 项目我们只要会设置 src 即可。

如上图箭头所示,被标注的目录会在右侧有一个总的概括。其中 classes 虽然是 Excluded 目录,但是它有特殊性,可以不显示在这里。

问题二.

对于public,private以及各权限的理解

在java中,我们最常用的是public,但是随着学习进程,我发现private用途也越来越大,那么区分权限也就成了重中之重。

public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用

2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。

问题三 区分implement和extend

一个是继承,一个是实现接口,继承这个可以理解为继承父类的方法,父类中的方法可以在子类中用到,super(),实现接口就是在接口中定义了方法,这个方法要你自己去实现,接口可以看作一个标准,比如定义了一个动物的接口,它里面有吃(eat())这个方法,你就可以实现这个方法implements,这个方法是自己写,可以是吃苹果,吃梨子,香蕉,或者其他的。IMPLEMENTS就是具体实现这个接口。

代码调试中的问题和解决过程

发生覆盖的条件:

1 发生在有继承关系的两个类之间2 方法必须具有相同的方法名,返回值类型,参数列表(如果参数列表不同,系统会默认这两个重载后的不同的两个方法)

3 重写的方法不能比被重写的方法有更低的访问权

4 重写的方法不能比被重写的方法抛出更宽泛的异常

5 私有方法不能被覆盖,不调用不报错,调用就报错

6 构造方法无法被覆盖,因为构造方法不能被继承

7 静态方法不存在覆盖,继承是对象的继承,而不是类的继承。静态方法进入内存以后,不会再有新的内存变化,所以没有覆盖这一说。

8 覆盖指的是成员方法,和成员变量无关

调试后发现只被打印一次

代码托管(https://git.oschina.net/bestiisjava2017/nhx20155309-Java)

上周考试错题总结

  1. 填空:Linux Bash中,(grep )命令可以进行全文搜索。
  2. 填空:~0b1010的十进制值是(-11)
  3. 填空:System.out.println(“”+52+25);的结果是(5225)

    4.填空:System.out.println(52+25+””);的结果是(77)

    上一周的错题主要集中在试卷的前半部分。

    说来也真是十分惭愧,第一题和第二题娄老师曾经多次强调,可是我还是做错了,尽管每次只是将题目变个型,可是还是做错了,证明自己还是理解的不够透彻。第三题和第四题是一个类型的问题,为此我还特意上网上查找了一下。找到了关于这类题目更多的变型。System.out.println('2' + "2") 结果是22, 因为'2'是char, "2"是String. char + String会变成String

    System.out.println('2' + 2)结果才是52, '2'的代码是50,加上int 2,结果才是52。

    错题已经进行整理。

感悟与思考

通过前面几周的考试与学习,我对java这门课也有了一定的了解。我认为自己的学习能力跟那些学习特别好的人确实存在着一些差距,但是这个差距不是不能避免的,我相信在自己的努力以及学习之下一定能够克服。

学习进度条

代码行数(新增/累积)	博客量(新增/累积)	学习时间(新增/累积)	重要成长

目标 5000行 30篇 400小时

第一周 6/6 1/4 20/20

第二周 320/340 1/5 18/38

第三周 479/900 1/6 22/60

第四周 320/1358 1/7 30/90

2016-2017-2 20155309南皓芯java第四周学习总结的更多相关文章

  1. 2016-2017-2 20155309 南皓芯java第六周学习总结

    教材内容详解 这一次主要学习的是第十章与第十一章的内容.主要讲述了串流,字符处理和线程以及并行API. 输入输出 串流:Java中的数据有来源(source)和目的地(destination),衔接两 ...

  2. 2016-2017-2 20155309南皓芯java第五周学习总结

    教材内容总结 这一周学习的进度和前几周比较的话是差不多的,都是学习两章. 异常处理 1.理解异常架构 2.牚握try...catch...finally处理异常的方法 3.会用throw,throws ...

  3. 2016-2017-2 20155309南皓芯《java程序设计》第七周学习总结

    教材学习内容总结 Lambda 一种匿名方法 表达式构成 括号以及括号里用逗号分隔的参数列表 仅有一个参数的可以省略括号 ->符号 花括号以及花括号里的语句 仅有一条语句时可以省略花括号,并且这 ...

  4. 2016-2017-2 20155309南皓芯《java程序设计》第十周学习总结

    教材内容总结 网络编程 定义:网络编程就是在两个或两个以上的设备之间传输数据. 计算机网络概述: 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输. 网络中的每个设备都会有一个唯一的数 ...

  5. 2016-2017-2 20155309南皓芯《java程序设计》第九周学习总结

    教材内容介绍 一 JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性 JDBC标准分为两个部分:J ...

  6. 2016-2017-2 20155309 南皓芯《java程序设计》第八周学习总结

    教材学习内容总结 本周学习的主要是第十四章,第十五章的内容. NIO与NIO2 同步非阻塞IO(Java NIO) : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多 ...

  7. 20155309南皓芯2016-2017 2《Java程序设计》第一周学习总结

    关于java学习笔记的思考问题 第一章:JDK与JRE,JVM之间有没有必然的联系 第二章:可执行文件夹找到相关链接库 第三章:for与while循环的用法与比较,break与continue跳出的注 ...

  8. 2017-2018-2 20155309 南皓芯 Exp9 Web安全基础

    基础问题回答 1.SQL注入攻击原理,如何防御 原理:它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数 ...

  9. 2017-2018-2 20155309南皓芯 Exp8 WEB基础实践

    基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域:包含了文本 ...

随机推荐

  1. 什么是oauth2

    对于目前大部分Web应用来说,用户认证基本上都由应用自身来完成.具体来说,Web应用利用自身存储的用户凭证(基本上是用户名/密码)与用户提供的凭证进行比较进而确认其真实身份.但是这种由Web应用全权负 ...

  2. Java入门:Java环境变量PATH、CLASSPATH、JAVA_HOME

    一些初学者在用java HelloWorld指令运行程序的时候出现: Exception in thread "main" java.lang.NoClassDefFoundErr ...

  3. 支持iis高并发

    支持高并发的IIS Web服务器常用设置   适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0 适用的Windows版本:Windows Server 2008, Windows ...

  4. Docker查看映射卷报错

    问题描述: 当查看Docker容器的映射卷时出现报错信息,如下: [root@kazihuo ~]# docker inspect -f {{.Volumes}} volume   #volume指容 ...

  5. 高性能流媒体服务器EasyDarwin

    标准RTSP拉模式直播(EasyRelayModule):适合内部监控 分布式部署(EasyCMSModule):负载均衡主要是用Reids作为负载

  6. HTML面试基础问题

    1.Doctype作用?严格模式与混杂模式如何区分?它们有何意义?   1)<!DICTYPE>声明位于文档中的最前面,处于<html>标签之前,告诉浏览器的解析器,用什么文档 ...

  7. LintCode 412: Candy

    LintCode 412: Candy 题目描述 有 N 个小孩站成一列.每个小孩有一个评级. 按照以下要求,给小孩分糖果: 每个小孩至少得到一颗糖果. 评级越高的小孩可以得到更多的糖果. 需最少准备 ...

  8. 训练赛第二场C题 zoj 2339 Hyperhuffman

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2339 解题报告:题目太长了,比赛的时候根本看不懂,完了之后问了什 ...

  9. js操作控制iframe页面的dom元素

    1.代码1  index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  10. Shell基础-通配符

    * - 通配符,代表任意字符 ? - 通配符,代表一个字符 # - 注释 | - 分隔两个管线命令的界定 ; - 连续性命令的界定 ~ - 用户的根目录 $ - 变量前需要加的变量值 ! - 逻辑运算 ...