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

20155327 2016-2017-3 《Java程序设计》第4周学习总结教材学习内容总结一. 理解封装、继承、多态的关系封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。是软件设计模块化、软件复用和软件维护的一个基础。继承:是对有着共同特性的多类事物,进行再抽象成一个类。这个类就是多类事物的父类。父类的意义在于抽取多类事物的共性。java中的继承要使用extends关键字,并且java中只允许单继承,也就是一个类只能有一个父类。多态,把子类对象主观的看作是其父类型的对象,那么父类型就可以是很多种类型。实现多态,有二种方式,覆盖,重载。关系:继承可以复用代码,更大的用处是实现「多态」
封装是继承的基础,继承是多态的基础
「用父类声明对象引用,用子类生成对象」就有了多态二.理解抽象类与接口的区别1.抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。2.抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。三.掌握S.O.L.I.D原则S.O.L.I.D五大原则,用来更好地进行面向对象编程,五大原则分别是:The Single Responsibility Principle(单一职责SRP)The Open/Closed Principle(开闭原则OCP)The Liskov Substitution Principle(里氏替换原则LSP)The Interface Segregation Principle(接口分离原则ISP)The Dependency Inversion Principle(依赖反转原则DIP)四.了解模式和设计模式模式:模式是某外在环境(Context) 下﹐对特定问题(Problem)的惯用解决之道(Solution)。模式必须使得问题明晰,阐明为什么用它来求解问题,以及在什么情况下有用,什么情况下不能起作用,每个模式因其重复性从而可被复用,本身有自己的名字,有可传授性,能移植到不同情景下。模式可以看作对一个问题可复用的专家级解决方法。设计模式:计模式有四个基本要素:Pattern name:描述模式,便于交流,存档
Problem:描述何处应用该模式
Solution:描述一个设计的组成元素,不针对特例
Consequence:应用该模式的结果和权衡(trade-offs)五.能正确覆盖方法1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。六.了解垃圾回收机制垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,垃圾收集的目的在于清除不再使用的对象。GC通过确定对象是否被活动对象引用来确定是否收集该对象。GC首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。1.引用计数:是垃圾收集器中的早期策略。在这种方法中,堆中每个对象(不是引用)都有一个引用计数。当一个对象被创建时,且将该对象分配给一个变量,该变量计数设置为1。当任何其它变量被赋值为这个对象的引用时,计数加1(a = b,则b引用的对象+1),但当一个对象的某个引用超过了生命周期或者被设置为一个新值时,对象的引用计数减1。任何引用计数为0的对象可以被当作垃圾收集。当一个对象被垃圾收集时,它引用的任何对象计数减1。七.掌握Object类Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。  Object类是Java中唯一没有父类的类。
 其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。八.掌握enum教材学习中的问题和解决过程一.对于JAVA的学习中,我感觉还是通过代码才能更好理解,比如理解封装,继承,多态,例如以下代码:用java做一个简单计算器;import java.io.*;class OperationAttridute{ private double numberA=0; private double numberB=0; private double result=0; public double setNumberA(double i) { return numberA=i; } public double getNumberA() { return numberA; } public double setNumberB(double j) { return numberB=j; } public double getNumberB() { return numberB; } public double setResult(double z) { return result=z; } public double getResult(double a,double b) { return result; }}//将要运算的2个数字和运算结果进行封装。class OperationA extends OperationAttridute{ public double getResult(double a,double b) { double result=0; result=a+b; return result; } }//加法类:继承OperationAttridute类并且覆盖其getResult方法class OperationS extends OperationAttridute{ public double getResult(double a,double b) { double result=0; result=a-b; return result; }}//减法类:继承OperationAttridute类并且覆盖其getResult方法class OperationM extends OperationAttridute{ public double getResult(double a,double b) { double result=0; result=a*b; return result; }}//乘法类:继承OperationAttridute类并且覆盖其getResult方法class OperationD extends OperationAttridute{ public double getResult(double a,double b) { double result=0; if(b==0) { Throw new RuntimeException(“被除数不能为0”); } result=a/b; return result; }}//除法类:继承OperationAttridute类并且覆盖其getResult方法,除法要对被除数进行判断并抛出异常class Operationdo{ public static Object expression_r(char r) { OperationAttridute oa=new OperationAttridute(); switch(r) { case '+': oa=new OperationA(); break; case '-': oa=new OperationS(); break; case '*': oa=new OperationM(); break; case '/': oa=new OperationD(); break; } return oa; }}//运算类:通过传进来的参数,来调用运算方法class Account{ public static void main(String []args)throws Exception { char r='*'; OperationAttridute oa=(OperationAttridute)Operationdo.expression_r(r); double a=oa.setNumberA(9); double b=oa.setNumberB(2); System.out.println(oa.getResult(a,b)); }}//主程序
这样,只需要输入运算符号,通过多态,返回父类的方式实现了计算器的结果。代码调试中的问题和解决过程
  • xx1问题
  • xx1解决方案
  • xx2问题
  • xx2解决方案
  • ...
  • 代码托管
  • 代码提交过程截图:
    • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图
  • 代码量截图:
    • 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图
  • 上周考试错题总结学习进度条 代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长 目标 5000行 30篇 400小时 第一周 10/10 1/4 10/10 第二周 90/100 1/5 12/22 第三周 120/320 1/6 16/38 第四周 180/500 1/7 14/52 参考资料
  • Java学习笔记(第8版)

  • 百度百科
    -老师给的博客。

  • 相关内容推荐