20145334赵文豪 《Java程序设计》第4周学习总结

教材学习内容总结

第六章知识点总结

1-继承共同行为:如果在程序设计上存在着重复,那就需要修改,可以吧相同的程序代码提升(pull up)为父类。extends关键字表示新建的类会扩充原有的类的行为。

2-多态与is-a:子类只能继承一个父类,并且子类与父类之间有一种is-a的关系,让不是一种的类扮演另一种类需要加上类似于 强制类型转换的语法。-使用单一接口操作多种类型的对象就是多态,个人的理解就是用一种父类来控制许多的子类。

3-重新定义行为:在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,这称为重新定义(Override)。在重新定义父类中某个方法的时候,子类必须撰写与父类方法中相同的签署,加上@Override可用来检查该方法是否真的重新定义了父类中的某个方法,防止打错字,否则就会发生错误。

4-抽象方法、抽象类:如果某个方法区块中真的没有任何程序代码操作,可以使用abstract标示该方法public abstract void fight,定义不完整的类就不能用来生成实例,内含抽象方法的类也一定要定义为不完整的抽象类,子类继承抽象类,对于抽象方法,一种是继续标示其为抽象类,另一种就是操作抽象方法

5-protected成员:被声明为protected的成员,相同包中的类可以直接存取,不同包中的类可以在继承后的子类直接存取.因此要记住java的3(4)个权限关键词及其对应的权限范围,详见P172表6.1

6-重新定义的细节:如果想取得父类中的方法定义,可以在调用方法前加上super关键字,重新定义父类中的方法在子类中权限只能扩大不能缩小,在jdk5之后返回类型也可以是父类中方法返回类型的子类

7-再看构造函数:在创建子类实例后,会先进行父类定义的初始流程,在进行子类定义的初始流程,如果子类构造父类函数中没有指定执行父类中哪个构造函数,默认会调用父类中无参数构造函数如果父类中定义了构造函数,子类构造函数时就要注意调用父类中的哪个函数

8-再看final关键字:如果在class前加上final关键字,这就表示这个类是最后一个了,不会再有子类,也就是不能被继承。

9-java.lang.object:任何类的最上层父类一定就是java.lang.object,因此Object数组可以来收集各种类型的对象。instanceof:左操作数为对象,右操作数是类,可以用来判断对象是否由某个类创建

10-垃圾收集:对于不再有用的对象,JVM的垃圾收集器会将其释放。不同的需求会有不同的垃圾收集算法。

抽象类:如果还有些方面没有确定,可以调用抽象方法,等到平台确定后,再对代码进行符合这个平台的完善就行。

第七章知识点总结

1-接口定义行为:对于定义行为,可以使用interace关键字定义,类要操作接口,必须使用implements关键字,对接口中定义的方法有两种操作方式,一是操作接口中定义的方法,二是再度将该方法表示为abstract。操作接口表示“拥有行为”,不再是“是一种”的关系。

2-行为的多态:与继承相同,也可以让一个对象强行扮演(cast)某种行为,与多态相同,只要是操作同一个接口的类都可以拥有接口的行为,可维护型也同时得到了较大的提高。

3-解决需求变化:在java中类可以操作两个以上的类,可以同时继承某个类并操作某些接口;于此同时,java中接口可以继承自另一个接口,也就是继承父接口行为,再在子接口中额外定义行为。

4-接口中的方法没有操作时,一定得是公开并且抽象。 在interface接口中常常可以定义枚举常数(例:public static final int),实际上,在interface接口中也只能定义public static final的枚举常数,并且一定要使用=指定值,否则就会编译错误。个人感觉枚举常数在表达意思上更清楚一些,便于程序员读懂程序。接口也可以继承接口。

5-匿名内部类:主要是在临时继承某个类或操作某个接口并建立实例的需求(例:Some some=new Some(){};)

6-使用enum枚举常数:public enum Action{},实际上enum定义了特殊的类,enum中的元素也就是枚举常数。

教材学习中的问题和解决过程 课后练习:

Ch6:A D D AC DC C B A D

Ch7:A B A B B A D A A A

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

定义ArrayList类,不限长度地收集对象

import java.util.Arrays;

public class ArrayList { private Object[] list; private int next;

public ArrayList(int capacity)
{
list=new Object[capacity];
} public ArrayList()
{
this(16);
} public void add(Object o)
{
if(next==list.length)
{
list=Arrays.copyOf(list, list.length*2);
}
list[next++]=o;
}
public Object get(int index)
{
return list[index];
} public int size()
{
return next;
}
}     

设计一款RPG游戏的部分代码

    

public class PRG{ public static void main(String[] args){ demoSwordMan(); 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 coid 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());
}
}     

关于Override描述 Override也称函数覆盖,重写,复写 父类中的私有方法不可以被覆盖 在子类覆盖方法中,继续使用被覆盖的方法可以通过super.函数名获取 覆盖时,子类方法权限一定不能小于父类方法权限 当子类需要父类的功能,而功能主题子类有自己特有内容时,可以override父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容

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

关于将枚举类用在了switch语句中的问题

import static java.lang.System.out;

public class EnumGame {

public static void main(String[] args) {

    play(EnumAction.RIGHT);

    play(EnumAction.UP);

}
public static void play(EnumAction action) {
switch (action) {
case STOP:
out.println("播放停止动画");
break;
case RIGHT:
out.println("播放向右动画");
break;
case LEFT:
out.println("播放向左动画");
break;
case UP:
out.println("播放向上动画");
break;
case DOWN:
out.println("播放向下动画");
break;
}
}
}

使用interface来定义抽象的行为与外观,如接口中的方法可声明为public abstract

public interface Action{

public static final int STOP=0;
public static final int RIGHT=1;
public static final int LEFT=2;
public static final int UP=3;
public static final int DOWN=4;
} import static java.lang.System.out; public class Game{ public static void main(String[] args){
play(Action.RIGHT);
play(Action.UP);
}
public static void play(int action){
switch(action){
case Action.STOP:
out.println("bofangtingzhidonghua");
break;
case Action.RIGHT:
out.println("bofangxiangyoudonghua");
break;
case Action.LEFT:
out.println("bofangxiangzuodonghua");
break;
case Action.UP:
out.println("bofangxiangshangdonghua");
break;
case Action.DOWN:
out.println("bofangxiangxiadonghua");
break;
default:
out.println("buzhichicidongzuo");
}
}
}

本周代码托管截图

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

在忙碌中完成了这周的学习,这周的学习围绕着继承和接口,二者相似而不相同,学习内容较为抽象,看了老师分享的毕向东老师的视频,我个人感觉有些抽象的东西还是要看视频,视频中表达的方式和接受的深度要更高一点,也慢慢地感受到了java的魅力。语言问题还是要多练习多练习!

学习进度条

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

目标 3000行 20 300

第四周 250/350 1/3 21/30

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导

...

20145334赵文豪 《Java程序设计》第4周学习总结的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Codeforces Round #371 (Div. 2) - B

    题目链接:http://codeforces.com/contest/714/problem/B 题意:给定一个长度为N的初始序列,然后问是否能找到一个值x,然后使得序列的每个元素+x/-x/不变,最 ...

  2. HDU 2609 最小表示法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2609 题意:给定n个循环链[串],问有多少个本质不同的链[串](如果一个循环链可以通过找一个起点使得和 ...

  3. DSP using MATLAB示例 Example3.5

    代码: n = [0:10]; x = (0.9*exp(j*pi/3)).^n; % x(n) = k = -200:200; w = (pi/100)*k; % [0,pi] axis divid ...

  4. .NET开源项目常用记录

    综合类 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security).日志(Logging).数据访问(Data Access).配置管理( ...

  5. 后缀数组 POJ 2406 Power Strings

    题目链接 题意:连续重复子串.给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的(L = S^R ), 求 R 的最大值. 分析:枚举长度,判断条件是能被总长度整除且LCP ( ...

  6. java工厂模式实例化class

    import java.io.*; import java.util.*; interface fruit { public abstract void eat(); } class Apple im ...

  7. jQuery入门第二天

    3种选择器:元素选择器:$("button").class选择器:$(".btn").id选择器:$("#target1"). <sc ...

  8. BZOJ4428 : [Nwerc2015]Debugging调试

    设$f[i]$为最优策略下调试$i$行代码的时间,则: $f[1]=0$ $f[i]=\min((j-1)\times p+f[\lceil\frac{i}{j}\rceil])+r$ 意义为枚举pr ...

  9. 一道常被人轻视的前端JS面试题(转)

    分享下我曾经出过的一道面试题,此题是我出的一套前端面试题中的最后一题,用来考核面试者的JavaScript的综合能力,很可惜到目前为止的将近两年中,几乎没有人能够完全答对,并非多难只是因为大多面试者过 ...

  10. UIAlertView 与 UIActionSheet (提示用户)的使用方法

    UIAlertView 提示用户  帮助用户选择框 //    UIAlertView *alterView = [[UIAlertView alloc] initWithTitle:@"警 ...