20155324 2016-2017-2 《Java程序设计》第4周学习总结

教材学习内容总结

继承

面对对象中,子类继承父类,避免重复定义行为就使用继承。在Java中,继承时使用extends关键字,private成员也会被继承,只不过子类无法直接存取,必须通过父类提供的方法来存取。

package cc.openhome;

public class RPG {
public static void main(String[] args) {
demoSwordsMan();
demoMagician();
} static void demoSwordsMan() {
SwordsMan swordsMan = new SwordsMan();
swordsMan.setName("Justin");
swordsMan.setLevel(1);
swordsMan.setBlood(200);
System.out.printf("劍士:(%s, %d, %d)%n", swordsMan.getName(),
swordsMan.getLevel(), swordsMan.getBlood());
} static void demoMagician() {
Magician magician = new Magician();
magician.setName("Monica");
magician.setLevel(1);
magician.setBlood(100);
System.out.printf("魔法師:(%s, %d, %d)%n", magician.getName(),
magician.getLevel(), magician.getBlood());
}
}

执行结果如下:

剑士:(Justin,1,200)
魔法师:(Monica,1,200)

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

多态与is-a

子类只能继承一个父类,继承有个重要的关系,就是子类与父类间会有is-a的关系。

以抽象讲法解释,就是使用单一接口操作多种类型的对象。

  • 继承可以复用代码,更大的用处是实现「多态」
  • 封装是继承的基础,继承是多态的基础
  • 「用父类声明对象引用,用子类生成对象」就有了多态

抽象方法、抽象类

  • abstract
  • Java中有抽象方法的类一定是抽象类,但抽象类中的方法不一定都是抽象方法
  • 抽象类不能使用new生成对象

public/package/protected/private

  • super与this
  • java.lang.Object
toString
equals
hashCode
instanceof
  • 垃圾收集(Garbage Collection,GC)
  1. 无法通过变量引用的对象就是GC认定的垃圾对象

2.垃圾回收前会调用finalize()方法,但由于调用时机无法确定,建议不要使用finalize()方法

  • 设计模式

    参考实验二 Java面向对象程序设计中的「模式」

接口定义行为

  • 对于“定义行为”,可以使用interface关键字定义,接口中的方法不能操作,直接标示为abstract,而且一定是public。类要操作接口,必须使用implements关键字。操作某借口时,对接口中定义的方法有两种处理方式,一是操作接口中定义的方法,二是再度将该方法标示为abstract。
package cc.openhome;

public abstract class Fish implements Swimmer {
protected String name;
public Fish(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public abstract void swim();
}

人类

package cc.openhome;

public class Human implements Swimmer {
private String name;
public Human(String name) {
this.name = name;
}
public String getName() {
return name;
} @Override
public void swim() {
System.out.printf("人類 %s 游泳%n", name);
}
}

鲨鱼

package cc.openhome;

public class Shark extends Fish {
public Shark(String name) {
super(name);
} @Override
public void swim() {
System.out.printf("鯊魚 %s 游泳%n", name);
}
}
  • 继承会是有“一种关系”,操作接口则表示“拥有行为”,但不会有“是一种”的关系。对于接口多态语法的判断,方式是“右边是不是拥有左边的行为”,或者“右边对象是不是操作了左边接口”。
package cc.openhome;

public class Ocean {
public static void main(String[] args) {
doSwim(new Anemonefish("尼莫"));
doSwim(new Shark("蘭尼"));
doSwim(new SwimPlayer("賈斯汀"));
doSwim(new Submarine("黃色一號"));
doSwim(new Seaplane("空軍零號"));
doSwim(new FlyingFish("甚平"));
} static void doSwim(Swimmer swimmer) {
swimmer.swim();
}
}
package cc.openhome;

public class Seaplane extends Airplane implements Swimmer {
public Seaplane(String name) {
super(name);
} @Override
public void fly() {
System.out.print("海上");
super.fly();
} @Override
public void swim() {
System.out.printf("海上飛機 %s 航行海面%n", name);
}
}
  • 类可以操作两个以上的类,也就是拥有两种以上的行为。类可以同时继承某个类,并操作某些接口。接口可以继承自另一个接口,也就是继承父接口行为,再在子接口中额外定义行为。

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

  • 如果两个接口都定义了某方法,操作两个接口的类并不会有错误,照样通过编译,但两个接口都有定义额方法是否表示不同的行为?
  • 可能有不同的行为,接口可以继承别的接口,也可以同时继承两个以上的接口,同样也是使用extends关键字,这代表了继承父接口的行为。

代码托管

  • 代码提交过程截图:

  • 代码量截图:

上周考试错题总结

  • 调用p145 sum函数计算1+2+3+4+5的代码是(MathTool.sum(1,2,3,4,5))
  • 做题的时候没有想到利用MathTool.sum来解决问题导致错误。
  • public void someMethod()和public int someMethod()是方法重载。(x)
  • 对概念的理解错误。导致了问题的错误。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第四周 400/500 1/1 15/20

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

耗时估计的公式

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

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

参考资料

20155324 2016-2017-2 《Java程序设计》第4周学习总结的更多相关文章

  1. # 20155337 2016-2017-2 《Java程序设计》第九周学习总结

    20155337 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  6. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  7. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  8. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

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

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. 【php】php位运算及其高级应用

    我们之前学过逻辑与(&&)      条件1 && 条件2 当两边条件同时成立时候返回1 逻辑或(||)         条件1 || 条件2    当两边条件只要有一 ...

  2. P1972 HHのnecklace 离线+树状数组

    此题莫队可过 然而太难了...... 我在胡雨菲那看的解法,然后自己打了一波,调了一个错,上交,自信AC. 做法:离线,对于L排序. 每种颜色可能出现很多次,那么我们如何不算重复呢? 只需把[L,n] ...

  3. 【洛谷P2585】三色二叉树

    题目大意:给定一个二叉树,可以染红绿黄三种颜色,要求父节点和子节点的颜色不同,且如果一个节点有两个子节点,那么两个子节点之间的颜色也不同.求最多和最少有多少个节点会被染成绿色. 题解:加深了对二叉树的 ...

  4. [luogu4018][Roy&October之取石子]

    题目链接 思路 这个题思路挺巧妙的. 情况一: 首先如果这堆石子的数量是1~5,那么肯定是先手赢.因为先手可以直接拿走这些石子.如果石子数量恰好是6,那么肯定是后手赢.因为先手无论怎样拿也无法直接拿走 ...

  5. CMakeLists.txt使用

    背景:C++代码在编译的过程中需要进行文件的包含,该文主要介绍CMakeLists.txt相关语法 CMake之CMakeLists.txt编写入门

  6. undefined is not an object(evaluating '_react3.default.PropTypes.shape)

    手机红屏报这个错时的解决办法: npm uninstall --save react-native-deprecated-custom-components npm install --save ht ...

  7. Day10--Python--动态传参,作用域

    python的三目运算a = 10b = 20c = a if a > b else b #先判断中间的条件a > b是否成立,成立返回if前面的值,不成立返回else后面的值,也可以 c ...

  8. padding内边距

    android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/ac ...

  9. macs 学习

    点击 首先andriomianfest主配文件(主要配置文件),来启动主要的activity对象,然后通过该对象调用create方法来加载布局文件xml active通过布局文件的控件生成相应的对象. ...

  10. tcping 与 telnet命令粗略使用

        使用tcping命令,在网上下载tcping文件,放入c盘的system32目录下,即可使用 使用tcping命令用来ping某个端口,能通的话,说明从外部到端口是没有问题的 使用telnet ...