20145204 《Java程序设计》第四周学习总结
2016-03-27 22:08
239 查看
20145204 《Java程序设计》第四周学习总结
教材学习内容总结
继承
什么时候使用继承?当多个类中出现重复定义的行为(即多个类中出现重复的代码)时,就把相同的程序代码提成为父类。
使用继承的意义
提高了代码的复用性。
使类和类之间产生关系,从而产生多态 。
注意
当类与类之间有所属关系时才使用继承。不能因为要使用别的类中的功能而随意使用继承。
子类只能继承一个父亲。
多态与is-a
在继承中子类和父类的“是一种”关系。
子类是一种父类:
SwordsMan swordsman=new SwordsMan;
Role role=new SwordsMan();
在java中有且仅有一种继承父类
重新定义行为
如果子类和父类的定义函数名相同会出现函数覆盖的情况。
多个类中功能相同但是功能主体不同,也可以抽取在父类中。
抽象方法、抽象类
上述在父类中的fight()函数没有撰写程序代码,用abstract关键词标识,
public abstract class roleplay表示定义不完整的类,就不能建立实例。
子类必须覆盖父类中的所有抽象方法,才能建立子类调用。
protected成员
protected与public、private类似都是权限关键字。如果成员被定义为protected的话在相同的包中可以直接存取。
super关键字
修改子类中已经存在的内容时,可以在调用方法前加上super关键字。
在使用super关键字调用父类方法,不能定义为private(只限定在类内中使用)
接口
为什么会用到接口我们在第六章中学习了继承,一个类继承另一个类就可以拥有该类中的一些方法,但是类的继承有一个“是一种”的属性,你继承哪个就是一种该类,可是有时候我们仅仅想要拥有类中方法但是与该类并没有从属关系,此时就用到接口。
接口使用
在java中会用到interface关键字定义接口。标准定义:
public interface role{ public abstract void roleplay (); }
我们注意到该方法只定义了一个接口,但是并没有具体操作方法。如果想要拥有role中的行为必须操作接口。
我们用关键字implements操作接口。
教材学习中的问题和解决过程
关于子类继承抽象类有些不太清楚,课本上说继续标识子类是一种抽象类或者说操作抽象方法。关于如何操作抽象方法小小的做了一个尝试:abstract class role{ abstract void speak(); } class student extends role { void speak(){ System.out.println("i am just a student"); } } public class abvoid { public static void main(String[] args) { student stu1=new student(); stu1.speak(); // TODO code application logic here } }
结果
代码调试中的问题和解决过程
简单继承class role { private String name; private int level; private int blood; public int getBlood(){ return blood; } public void setBlood(int blood){ this.blood=blood; } }//建立父类 class Magician extends role{ public void fight(){ System.out.println("魔法攻击"); } }//子类继承 public class roleplay{ public static void main(String[] args){ Magician mag =new Magician(); mag.setBlood(100); mag.setLevel(1); mag.setName("justin"); System.out.printf("%d %d %s %n",mag.getBlood(),mag.getLevel(),mag.getName()); mag.fight(); }//从输出可以看出实例mag已继承父类role。 }
运行结果:
子父类方法覆盖:
public class role{ public static void main(String[] args){ Magician mag =new Magician(); SwordsMan swords=new SwordsMan(); mag.setBlood(100); mag.setLevel(1); mag.setName("justin"); swords.setBlood(500); swords.setLevel(2); swords.setName("bob"); drawFight(swords); drawFight(mag); } static void drawFight(roleplay Role){ System.out.print(Role.getName()); Role.fight(); } }
结果显示:
本周代码托管截图
其他(感悟、思考等,可选)
这两周的学习内容中有很多的概念,书上的例子也有很多需要我们去实践,虽然说课本上的代码也敲了,知识内容都理解了,但是感觉学的还是不踏实,对于java面向对象这一块还是不能很好的应用。只能说学的多而不精,看上去每个概念都学了,但是应用方面有很大的欠缺。希望以后自己慢慢地实践过程中再学习体会吧。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3500行 | 30篇 | 400小时 | |
第一周 | 100/100 | 2/2 | 20/20 | |
第二周 | 200/300 | 1/3 | 30/50 | |
第三周 | 300/600 | 1/4 | 28/78 | |
第四周 | 300/900 | 2/6 | 20/98 |
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
相关文章推荐
- Eclipse配置默认新建文件类型
- 20145201 《Java程序设计》第四周学习总结
- Eclipse 使用 SVN 插件后修改用户方法汇总
- java学习笔记
- 20145331 《Java程序设计》第4周学习总结
- JavaBean对象与Map对象互相转化
- Java学习第四周学习笔记
- struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别
- Struts2中使用Session的两种方法
- eclipse开发中遇到的问题
- Spring框架启动--Web项目
- java支持的锁
- 20145330《Java程序设计》第四周学习总结
- java中this与super的区别
- struts2访问session的两种方法
- Java 多字段排序Comparator(兼容Date,Integer,Doubel,Long)
- Java 多态透析 详细理解
- 分析springmvc底层调用流程
- java.util.Calendar简介
- 《Java程序设计》第4周学习总结