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. hdu2191 多重背包

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2191 多重背包:有N种物品和一个容量为V的背包.第i种物品最多有n[i]件可用,每件费用是 ...

  2. 程序员必备的代码审查(Code Review)清单【转载】

    在我们关于高效代码审查的博文中,我们建议使用一个检查清单.在代码审查中,检查清单是一个非常好的工具——它们保证了审查可以在你的团队中始终如一的进行.它们也是一种保证常见问题能够被发现并被解决的便利方式 ...

  3. 【CLR in c#】事件

    1.事件模型建立在委托的基础上. 2,定义事件编译器会做三个动作,第一个构造具有委托类型的字段,事件发生时会通知这个列表中的委托. 第二个构造的是一个添加关注的方法+=.  第三个构造是一个注销事件关 ...

  4. ios 简单的倒计时验证码数秒过程实现

    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) ...

  5. iOS KVC valueForKeyPath学习心得

    #import <Foundation/Foundation.h> @interface myClass1 : NSObject @property (nonatomic, copy) N ...

  6. # asp.net core 1.0 项目结构

    1.环境 开发:VS2015 平台:window 7 2.解决方案级别结构 创建一个ASP.NET 5 Template Empty项目: src:存放项目(projects) global.json ...

  7. uva 1339

    Ancient Roman empire had a strong government system with various departments, including a secret ser ...

  8. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 D. Delay Time

    Problem D. Delay Time Input file: standard input Output file: standard output Time limit: 1 second M ...

  9. An Unfair Game-[ACdream1035]

    Problem Description There are n people and n target, everyone should get one target, no two people g ...

  10. ccc 旋转

    cc.Class({ extends: cc.Component, properties: { moveSpeed: 100, rotationSpeed: 90 }, // use this for ...