您的位置:首页 > 编程语言 > Java开发

20145237 《Java程序设计》第4周学习总结

2016-03-27 22:51 239 查看

20145237 《Java程序设计》第4周学习总结

教材学习内容总结

一. 继承

.

定义:面向对象中,涉及对象过多时容易出现重复行为,为了避免这种情况,就可把重复的部分写成父类,由子类来继承父类。

package cc.openhome;

public class RPG {

private String name;

private int level;

private int blood;

public void fight(){

System.out.println("挥剑攻击");

}

public int getBlood() {

return blood;

}

public void setBlood(int blood){

this.blood = blood;

}

public int getLevel(){

return level;

}

public void setLevel(int level){

this.level = level;

}

public String getName(){

return name;

}

public void setName(String name) {

this.name = name;

}

}

```

```

public class SwordsMan extends Role{

public void fight(){

System.out.println("挥剑攻击");

}

}

```

```

public class Magician extends Role {

public void fight(){

System.out.println("魔法攻击");

}

public void cure() {

System.out.println("魔法治疗");

}

}

```

2.

关键字:



extends:子类继承父类时要使用extends,如public class子类 extends 父类,表示新建的类会扩充原有的类的行为。



protected:与private功能相似,但是在实际操作中,父类定义private成员无法在子类中存取,较为不方便,此时就可以改将其声明为protected,即可以在相同包中的类直接存取,继承的子类也可以直接存取。



final:用于class前,表示此类不会有子类,无法被继承。



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

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

. 多态is-a:



子类只能继承一个父类,并且子类与父类之间有一种is-a的关系,子类 is a 父类,在编写代码时:父类=new 子类,让不是一种的类扮演另一种类需要加上类似于 强制类型转换的语法,如SwordsMan swordsman=(SwordsMan) role1。



使用单一接口操作多种类型的对象就是多态,个人的理解就是用一种父类来控制许多的子类。

二. 抽象方法、抽象类

1.定义:如果某个方法区块中真的没有任何程序代码操作,可以定义为抽象类,定义不完整的类就不能用来生成实例,(ps:内含抽象方法的类也一定要定义为不完整的抽象类,在工作中如果还有些方面没有确定,就可以调用抽象方法,等到平台确定后,再对代码进行符合这个平台的完善操作)

2.abstract:抽象类以及方法需要用abstract标示该方法,如public abstract void fight

3. java.lang.object:任何类的最上层父类一定就是java.lang.object,因此Object数组可以来收集各种类型的对象。

4. instanceof:左操作数为对象,右操作数是类,可以用来判断对象是否由某个类创建

3. 接口

1.

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

2.

行为的多态:与继承类似,也可以让一个对象强行扮演某种行为。

3.

接口语法细节: 接口中的方法没有操作时,一定得是公开并且抽象。

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

·对接口中定义的方法有两种:

1.操作接口中定义;

2.再度将该方法标示为abstract;

```

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);

}

}

```

·Submarine操作了Swimmer,但没有继承Fish。

```

public class Submarine implements Swimmer {

private String name;

public Submarine(String name) {

this.name = name;

}

public String getName() {

return name;

}

@Override

public void swim() {

System.out.printf("潜水艇%s潜行%n", name);

}

}

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

这周我按照书上的代码敲上去之后会出现很多错误,仔细看书才发现代码中间会有交代如果改成怎样怎样才行,和同学交流修改后就好了。

本周代码托管截图



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

已经是学习java的第四周了,从一开始的什么都不懂到现在的逐渐了解,从刚开始写博客的无从下手到现在每次写之前都已经有了基本想法,在java的学习中真的学到了许多。尤其是合理安排自己的时间,因为java学习不是几个小时就能够完成的,它需要花费我们大量的时间,只有把学习任务合理分配到每一天才能不觉得很累,我还有很多做的不足的地方,还需要很多的努力。连着两周都是两章内容,对于我这样的学的不好的同学来说有点消化不好,我需要投入更多的时间。。。

学习进度条

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

| -------- | :----------------:|:----------------:|:---------------: |:-----:|

| 目标 | 5000行 | 30篇 | 400小时 | |

| 第一周 | 30/30 | 2/2 | 20/20 | |

| 第二周 | 100/130 | 2/4 | 18/38 | |

| 第三周 | 100/230 | 3/7 | 22/60 | |

| 第四周 | 300/530 | 2/9 | 30/90 | |
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: