20145123刘森明《Java程序设计》第四周学习总结

代码托管http://git.oschina.net/null_289/Java2016/tree/master

教材学习内容总结

本周学习了教材的第六章、第七章,这两章所讲代码设计都是以一个项目为基础的,所以着重讲了代码继承,多态操作以及接口语法。

1. 继承

  1. 定义:面向对象中,涉及对象过多时容易出现重复行为,为了避免这种情况,就可把重复的部分写成父类,由子类来继承父类。
  2. 关键字:
  • extends:子类继承父类时要使用extends,如public class子类 extends 父类,表示新建的类会扩充原有的类的行为。
  • protected:与private功能相似,但是在实际操作中,父类定义private成员无法在子类中存取,较为不方便,此时就可以改将其声明为protected,即可以在相同包中的类直接存取,继承的子类也可以直接存取。
  • final:用于class前,表示此类不会有子类,无法被继承。
  • Override:在继承父类之后,定义与父类中相同的方法部署,但执行内容不同,这称为重新定义,在代码中加上@Override可用来检查该方法是否真的重新定义了父类中的某个方法,防止打错字,否则就会发生错误。

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

4.   多态is-a:

  • 子类只能继承一个父类,并且子类与父类之间有一种is-a的关系,子类 is a 父类,在编写代码时:父类=new 子类,让不是一种的类扮演另一种类需要加上类似于 强制类型转换的语法,如SwordsMan swordsman=(SwordsMan) role1。
  • 使用单一接口操作多种类型的对象就是多态,个人的理解就是用一种父类来控制许多的子类。

2. 抽象方法、抽象类

  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的枚举常数,并且一定要使用=指定值,否则就会编译错误。个人感觉枚举常数在表达意思上更清楚一些,便于程序员读懂程序。接口也可以继承接口。

4. 其他

    1. 匿名内部类:主要是在临时继承某个类或操作某个接口并建立实例的需求(例:Some some=new Some(){};
    2. enum枚举常数:public enum Action{},实际上enum定义了特殊的类,enum中的元素也就是枚举常数。

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

刚开始学习继承的时候敲第一个角色游戏代码出现错误,在继承的时候,需要将完整的代码都放在同一个文件夹下,书中有时候只是展现一部分代码,但前面的角色定义还要敲上去,保证代码的完整性,这样子类才会继承父类。
教材中的一些内容讲得十分详尽,例如多态与is-a,翻来覆去讲不同的语句可能出现的编译失败的情况及原因,这部分的学习也十分重要,关系到以后写出来的东西有没有弹性、好不好维护的问题;书中也有一些表述比较少,让人看得不是很懂的地方,例如instanceof运算符,Override等,只能通过视频加以学习。现阶段还停留在敲书上代码的过程,希望自己能够在接下来提出些更有价值的问题。

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

学习中对于继承这一问题还不是很清楚。向同学请教后得知了自己的不足。

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

已经学习了四个星期了,但是觉得这门课程还没有真正的入门。希望自己以后能够更有效率的学习Java。

学习进度条

  代码行数 学习时间 博客数量 学习成长
目标 4000 300 20  
第一周 100/100 5/5 2/2  
第二周 130/230 15/20 1/3  
第三周 240/470 12/32 1/4  
第四周 500/970 18/50 1/5  
时间: 2024-08-09 17:59:15

20145123刘森明《Java程序设计》第四周学习总结的相关文章

20145123刘森明《Java程序设计》第九周学习总结

教材学习内容总结 1.撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找. 2.JDBC目的:让Java程序设计人员在撰写数据库操作程序时可以有个统一的接口,无须依赖特定的数据库API,“写一个Java程序,操作所有数据库”. 3.联机数据库,需要在classpath中设定JDBC驱动程序.基本数据库操作相关JDBC接口或类是为位于java.sql包中. 4.Connection接口的操作对象是数据库联机代表对象. 5.①Statement是SQL描述的代表对象,可以使用exe

20145123刘森明《Java程序设计》第八周学习总结

代码托管地址:http://git.oschina.net/null_289/Java2016 教材学习内容总结 一.日志API 使用日志的起点是Logger类,LOgger实例的创建有许多要处理的要素,LOgger类的构造函数标识为protected,不是java.util.logging同包的类不能直接以new创建,要取得Logger实例,必须使用Logger的静态方法getlogger(). 调用getLogger()是,必须指定Logger实例所属名称空间,名称空间以“.”作为层级区分,

20145123刘森明《Java程序设计》第五周学习总结

代码托管地址:http://git.oschina.net/null_289/Java2016 教材学习内容总结 异常处理 •使用try.catch: Java中所有错误都会被包装成对象,可以尝试(try)执行程序并捕捉(catch)代表错误的对象后做一些处理.使用了try.catch语法,JVM会尝试执行try区块中的程序代码,如果发生错误,执行程序会跳离错误发生点,然后比对catch括号中声明的类型,是否符合被抛出的错误对象类型,如果是就执行catch中的程序代码. •异常继承架构:错误会被

20145123刘森明《Java程序设计》第十周学习总结

教材学习内容总结 1.网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输2.在实际传输数据以前需要将域名转换为IP地址,实现这种功能的服务器称之为DNS服务器,也就是通俗的说法叫做域名解析3.在现有的网络中,网络通讯的方式主要有两种:TCP(传输控制协议)方式UDP(用户数据报协议)方式4.客户端(Client)是指网络编程中首先发起连接的程序,客户端一般实现程序界面和基本逻辑实现,在进行实际的客户端编程时,无论客户端复杂还是简单,以及客户端实现的方式,客户端的编程主要由三个步骤实

20145123刘森明《Java程序设计》第三周学习总结

教材学习内容总结 ·理解Clothes c1 = new Clothes();·构造方法决定类生成对象的方式:this.new·== 与 equals的区别:==比较是比较对象的地址,而equals 是逻辑上相等·基本类型包装:int-Integer.long-Long.byte-Byte.float-Float.double-Double.boolean-Boolean....·String/StringBuffer/StringBuilder·学会使用Java API,在Windows下一定

20145123刘森明《Java程序设计》第二周学习总结

教材学习内容总结 这一章学习的知识,在以前的C语言中已经学习过了.所以学起来比较的轻松.主要讲的就是数据与变量的类型和运算符:流程控制等知识点. 教材学习中的问题和解决过程 这周在Java上花费的时间较多.首先对于java语言中,虽然之前对于java的语言的语法有所了解,但是对于具体的细节还存在问题.对于输出函数System.out.printf()和Syetem.out.println()的区别,看书后得知Syetem.out.println()函数在编译后会换行,在第一章的“hello wo

20145123刘森明《Java程序设计》第七周学习总结

学习进度条 教材学习内容总结 第十一章1.静态sleep()用于流程暂停指定时间,单位是毫秒2.一个Thread被标记为Daemon线程,在所有非Daemon线程都结束时,JVM自动就会终止3.线程有优先权,数字越大优先权越高.如果优先权相同,则输流执行4.线程完成run()方法后,就会进入Dead5.线程一旦归入某个群组,就无法更换第十三章1.时间的度量格林威治标准时间 GMT世界时 UT国际原子时 TAI世界协调时间 UTCUnix时间 (不考虑闰秒修正,用以表达时轴上某一瞬间)2.重点 P

2015-2016-2《Java程序设计》团队博客1

项目内容 经过一些讨论之后决定了最终的项目:简易画图板项目设计与开发 目标 制作一个能够画各种图形的画板,并能有多种颜色可以选择:输入文本时也可以选择字体:能够保存,新建,和导入图片 实现计划 十一周 完成小组分工,以及设定初期的设计项目和目标 十二周 搭建主架构,代码初期编写 十三周 代码初步完成,在博客中展示初期成果 十四周 代码完善,并初步试运行 十五周 代码的最终优化,在PC环境下完整实现. 成员 20145105姜丽 20145106石晟荣 20145118常悦 20145123刘森明

20165101刘天野 2017-2018-2 《Java程序设计》第1周学习总结

20165101刘天野 2017-2018-2 <Java程序设计>第1周学习总结 教材学习内容总结 Java的地位 Java的特点 安装JDK Java应用程序开发步骤 反编译 安装Git 使用Git在码云中托管代码 教材学习中的问题和解决过程 问题1:如何在Ubuntu中安装Oracle JDK 问题1解决方案:参考文章<Ubuntu 14.04安装JDK1.8.0_25与配置环境变量> 问题2:如何使用Git托管代码 问题2解决方案:参考文章<使用码云和博客园学习简易教