学号 2018-2019-20175212 《Java程序设计》第5周学习总结

教材学习内容总结

接口

  1. 声明接口: interface 名字
  2. 接口体:接口体中只有常量无变量,只有抽象方法没有普通方法;所有常量的访问权限都为public,且都是static常量(允许省略publicfinalstatic、修饰符),抽象方法的访问权限也都是public。如
interface Printable {
int MAX = 100;
void add();
float sum(float x ,float y);
}

实现接口

1.类实现接口:使用 implements声明该类实现接口,如:

class A implements Printable,Addable;

2.重写接口中的方法:要非抽象类实现某个接口,那么此类必须重写接口中的所有方法。其中要去掉abstract修饰符、给出方法体,且方法的访问权限要明显的用public来修饰。

若是一个类实现一个接口,但没有重写接口中的所有方法,则此类必须是抽象类。如:

interface Computable{
final int MAX = 100;
void speak(String s);
int f(int x);
float g(float x, float y);
}
Abstract class A implements Computable{
public int f(int x) {
int sum = 0;
for(int i=1;i<=x;i++){
sum = sum +I;
}
return sum;
}
}

3.如果一个接口不加public修饰,就称作友好接口,可以被与该接口在同一包中的类实现。

若父类实现了某个接口,那么子类就自然实现了该接口,不必再声明。

import语句可以引入包中的接口,如 import java.io.*;

接口回调

接口回调指的是:可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。(为之后复习此重点概念,下为引用书上示例程序)

interface  ShowMessage {
void 显示商标(String s);
}
class TV implements ShowMessage {
public void 显示商标(String s) {
System.out.println(s);
}
}
class PC implements ShowMessage {
public void 显示商标(String s) {
System.out.println(s);
}
}
public class Example6_2 {
public static void main(String args[]) {
ShowMessage sm; //声明接口变量
sm=new TV(); //接口变量中存放对象的引用
sm.显示商标("长城牌电视机"); //接口回调。
sm=new PC(); //接口变量中存放对象的引用
sm.显示商标("联想奔月5008PC机"); //接口回调
}
}

理解接口

  1. 接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示。
  2. 可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据接口里的行为标准给出的具体行为。
  3. 核心思想就在于它可以要求某些类有相同名称的方法,但方法的具体内容(方法体的内容)可以不同。

接口与多态

接口产生的多态是指不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在回调接口方式时就可能具有多种形态。

接口参数

如果一个方法的参数是接口类型,我们就可以将任何实现该接口的类的实例的引用传递给该接口参数,那么接口参数就可以回调类实现的接口方法。

教材学习中的问题和解决过程

  • 问题1:因为接口体只有抽象方法而没有普通方法,那么不禁思考接口体中是否可以自己定义构造方法?

  • 问题1解决方案:此问题是在学习教材6.2时提出,在学到后边的范例程序自我意识到, 接口体在使用上 并不同普通的类需要构造方法,而是使用implements指令在类的声明时使用。

  • 问题2:在P153的Example6_4中,为算开方运算,有一段代码是:Math.sqrt(a*b); ,然而整个程序的代码中没有引入过Math类或是带Math的包。

  • 问题2解决方案:经过上网查找发现,java.lang.Math包是建立java工程时自动导入的。

  • 问题3:在P153的Example6_4中,最后的输出函数一概往日的println而使用了printf,虽不会有编译运行上的错误,但因不换行导致如下图很不美观,不知为何??

  • 问题3解决方案:并没有得到什么硬核解答,因此问题对编程影响不大,故猜测此程序为另一位具有不同爱好的编者所写。

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

  • 问题1:教材P160中的编程题,在编写程序编译时出现下图错误而不理解。

  • 问题1解决方案:接口参数章节没有完全理解,此题中参数应填new Dog()和new Cat ,表示符合之前定义的数据类型的一个新对象。

代码托管

  • 在此说明:因本地仓库不知为何损坏,因此重新克隆了一个仓库,因而本周代码量与总代码量相同

上周考试错题总结

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)

    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)

    • 一周提交次数少于20次的不加分
  6. 其他加分:

    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:

    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

  • 博客中值得学习的或问题:

    • 在使用markdown语句时可以多使用“代码格式”以方便查阅浏览
    • 教材学习内容比较精炼,有自己的思考
  • 代码中值得学习的或问题:

  • 基于评分标准,我给本博客打分:5分。得分情况如下:

1.正确使用Markdown语法(加1分):

2.模板中的要素齐全(加1分)

3.代码调试中的问题和解决过程, 一个问题加1分

4.本周有效代码超过300分行的(加2分)

点评过的同学博客和代码

  • 本周结对学习情况

  • 结对学习内容

    • 第六章代码学习、调试

    • 四则运算器的构想

  • 上周博客互评情况(只要链接,具体点评放相应博客下)

其他(感悟、思考等,可选)

1.接口作为一种用来提前声明的特殊的类,由于简洁直观,可以广泛使用。

2.第一次java实验练习让我意识到写一个符合功能需求的程序是一个比较复杂的过程,现在的基础知识一定要扎实牢靠地进行学习。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 6/6 1/1 20/20
第二周 245/251 1/2 18/38
第三周 633/884 3/7 22/60
第四周 305/1189 1/4 30/90
第五周 410/1599 3/7 30/120

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

(有空多看看现代软件工程 课件

软件工程师能力自我评价表
)

参考资料

学号 2018-2019-20175212 童皓桢《Java程序设计》第5周学习总结的更多相关文章

  1. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  2. 学号 20175212童皓桢 《Java程序设计》第8周学习总结

    学号 20175212童皓桢 <Java程序设计>第8周学习总结 教材学习内容总结 泛型 class People<E> 其中People是泛型类的名称,E是其中的泛型,也就是 ...

  3. 20175212童皓桢 《Java程序设计》第11周学习总结

    20175212童皓桢 <Java程序设计>第11周学习总结 教材学习内容总结 一.URL类 1.一个URL对象通常包含最基本的三部分信息:协议.地址.资源 2.构造方法: public ...

  4. 20175212童皓桢 《Java程序设计》第六周学习总结

    20175212童皓桢 <Java程序设计>第六周学习总结 教材学习内容总结 第七章 内部类与异常类 1.内部类 Java支持在一个类中定义另一个类,这样的类称作内部类,包含内部类的类称为 ...

  5. 20175212童皓桢 实验四 Android程序设计

    20175212童皓桢 实验四 Android程序设计 实验内容 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>并完成相关 ...

  6. 20175212童皓桢 实验三敏捷开发与XP实践实验报告

    20175212童皓桢 实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 一.Code菜单功能的研究 Move Line/statement Down/Up:将某 ...

  7. 20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习

    20175212童皓桢 在IDEA中以TDD的方式对String类和Arrays类进行学习 要求 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 ...

  8. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  9. 学号20145303 《Java程序设计》第一周学习总结

    学号20145303 <Java程序设计>第一周学习总结 教材学习内容总结 *dos命令行: dir:列出当前目录下的文件及文件名 md:创建目录 rd:删除目录.为空时文件夹(文件夹为空 ...

  10. 学号20145322 《Java程序设计》第一周学习总结

    学号20145322 <Java程序设计>第一周学习总结 教材学习内容总结 Java诞生于Sun公司,于1998年12月4日发布J2SE,约以两年为一周期推出重大版本更新. 2010年Or ...

随机推荐

  1. EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用

    EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用 在不想变的单元格前加$符号(列标和列数,两个都要加$),变成绝对引用,默认情况是相对引用 L4固定不变的方式:$L$4 M4固定不 ...

  2. 解决pycharm左侧项目文件名中文字体乱码情况?中文显示口口口口.

    解决pycharm左侧项目文件名中文字体乱码情况?中文显示口口口口. 点击file,进入settings 出现 Appearance & Behavior 点击Appearance UI Op ...

  3. FairyGUI TextField

    记录一个在使用FairyGUI的TextField时遇到的坑. TextField有一个文本模板功能,可以实现类似占位符的功能,如:{ number = 0 },然后我们可以在脚本中修改number的 ...

  4. springboot+mybatis环境的坑和sql语句简化技巧

    1.springfox-swagger实体类无限递归 https://hacpai.com/article/1525674135818 里面有不完美的解决方案 不用动源码的解决方案也有,在swagge ...

  5. Nginx try_files 指令

    Nginx try_files 指令 按顺序检查文件是否存在,返回第一个找到的文件.结尾的斜线表示为文件夹 -$uri/.如果所有的文件都找不到,会进行一个内部重定向到最后一个参数. 务必确认只有最后 ...

  6. No bean named 'dataSource' is defined

    jar包导入多了,导jar包只需引用一次,如果dao层引用了pojo,然后service只需引用dao就可以引用pojo,然后重新maven install  就好了 如果删除导入多余的jar包不行, ...

  7. Linux直播推流

    Linux系统实现youtube推流直播 系统:centos-7 软件:FFMPEG, youtube-dl 1. 安装FFMPEG 创建并cd到一个目录,下载最新的FFMPEG(下面是64位,32位 ...

  8. PyGame实现情人节表白利器

    前提:写不出那么那个的话哇,随便写写,随便看看,重在代码(文章末尾有免费完整源代码) 实验环境: pygame 1.9.4 pycharm python3.6 实现思路: pygame.display ...

  9. vs编译过程中出的错

    如果运行时出现这样的错,关闭正在运行的.exe文件,即可正常运行

  10. P4705 玩游戏

    思路 超级麻烦... 写了一堆最后常数太大T飞了... 真的难受 发现solve函数可以不用把下一层复制上来,直接传指针就可以,下次再说写不写叭 思路 \[ ans_k=\sum_{i=1}^n\su ...