20165218 2017-2018-1 《Java程序设计》第三周学习总结

教材学习内容总结-第四章 类与对象

面向对象语言

需要完成某种任务时,首先要想到,谁去完成任务,即哪个对象去完成任务;提到数据,首先想到这个数据是哪个对象的。————《Java 2实用教程》P51

面向对象编程的三个特性:封装性、继承、多态

  • 封装性: 将数据和对数据的操作封装在一起。通过抽象,即从具体的实例中抽取出共同性质形成一般的概念。
graph LR
A[行为/功能]-->|抽象|B[方法]
graph LR
A[状态描述]-->|抽象|B[属性]
  • 继承: 子类可以继承父类的属性和行为

  • 多态: 一是操作名称的多态性,即向操作传递不同消息;二是继承有关的多态,指同一个操作被不同类型对象调用时可能产生不同行为。


  • 类=类声明+类体
  • 类体的内容:变量的声明+方法定义
  • 成员变量在整个类内都有效,其有效性与它在类体中书写的先后位置无关。
  • 方法中的局部变量只在方法内有效,且与其声明的位置有关
变量 有效范围
参数 整个方法
在一个复合语句中声明 该复合语句
在一个循环语句中声明 该循环语句
class A{
int a = 12; \\合法,声明的同时赋予初值12
}
class A{
int a;
a = 12;\\非法
}

类体的内容中不能有语句,语句只能出现在方法体中


构造方法与对象的创建

  • 构造方法

程序用类创建对象时需要的一种特殊方法,名字必须与他所在的类名字完全相同,没有类型

System.out.println("南孚电池的储电量是:"+nanfu.electricityAmount);

类的名字 对象名字 \\声明对象
对象 = new 构造方法 \\为对象分配变量(使用new运算符和构造方法)
  • 使用对象

对象.变量
对象.方法

参数传值

  • 可变参数

\\示例
public void f(int ... x)
\\示例2
public void g(double a, int ... x)
\\错误示例,可变参数x代表的最后一个参数不是method方法的最后一个参数
public void method(int ... x, int y)

可变参数不给出参数列表中从某项开始直到最后一项参数的名字和个数,但这些参数类型相同。参数代表可以通过下表运算来表示参数列表中的具体参数。


实例成员与类成员(static)

  • 实例变量与类变量

实例变量和相应的对象关联,类变量和相关联

  • 实例方法与类方法

方法 实例方法 类方法
分配入口地址 该类创建对象后 该类被加到内存时
调用 通过对象调用 通过类名和对象调用皆可
操作 可操作实例变量和类变量 只能操作类变量

this关键字

表示某个对象(注意与前文区分成员变量与局部变量的this区分),可以出现在实例方法和构造方法中,但不可以出现在类方法中。

  • this关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象

  • this关键字出现在实例方法中时,就代表正在调用该方法的对象


访问权限

权限 关键字 含义
私有 private 在B类中,不能通过A类的类名来调用A中的私有类变量和私有类方法
共有 public B类中用类A创建了一个对象后,该对象能访问A中的共有变量和共有方法。B中也可通过A的类名调用A中的类成员变量和类方法
受保护的 protected

B类中用类A创建了一个对象后,如果B和A类在同一个包中,那么该对象可以访问A的protected变量和protected方法。任何一个与A类同包的类中,也可通过A的类名访问A类的protected类变量和protected类方法

友好| 不用privatepublicprotected修饰 | B类中用类A创建了一个对象后,如果B和A类在同一个包中,那么该对象可以访问A的友好变量和友好方法。任何一个与A类同包的类中,也可通过A的类名访问A类的类友好成员变量和类友好方法


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

  • 问题1:“友好变量和友好方法”与“受保护的成员变量和方法”有什么不同?
  • 问题1解决方案:成员变量分为实例变量和类变量。“友好”是“任何一个与A类同包的类中,可通过A的类名访问A类的类友好成员变量和类友好方法”;“ protected ”则是“任何一个与A类同包的类中,可通过A的类名访问A类的protected类变量和protected类方法”。“友好”比protected权限更大一些。

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

  • 问题1:当需要同时编译三个源文件时,比如Example4_8.java,Circle.java,Circular.java(都在Ch4/src之下,当前位置是Ch4,在命令行输入javac -d bin src/Example4_8.java,会出现如下状况

  • 问题1解决方案:这是因为同时需要编译的Circle.java,Circular.java不在Ch4之下,需要进入Ch4/src后,利用javac -d ../bin Example4_8.编译即可:

  • 问题2:教材第76页实例

  • 问题2解决方案:虽然在类Example4_9没有声明数据类型,但在类SIM中声明了double型,调用SIM为对象simOne分配变量时,数据类型要保持统一。在后面加大写字母L

  • 问题3:因为理解不深刻,错把代码写成

  • 问题3解决方案:声明类的格式是类 对象名字,而使用对象则是对象.变量/方法,若是类变量,则可以类.类变量,通过类名直接访问类变量

代码托管

参考资料

20165218 2017-2018-1 《Java程序设计》第三周学习总结的更多相关文章

  1. Java程序设计第三周学习总结

    1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  2. 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...

  3. 20165218 2017-2018-1 《Java程序设计》第一周学习总结

    20165218 2017-2018-1 <Java程序设计>第一周学习总结 教材学习内容总结 第一章.Java入门 1. Java特点 Java具有简单.面向对象.平台无关.多线程.动态 ...

  4. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  5. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  6. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  7. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  8. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  9. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  10. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. 后续博客转移到zhylj.cc

    此博客暂不更新了 zhylj.cc

  2. K8S全栈容器服务如何助力企业云化创新?

    容器编排管理平台Kubernetes在实践两年多后,市场主导地位被正式确定,随着首批认证服务商的宣布,围绕着容器的应用编排部署服务已然成熟,Kubernetes开始在商业场景为企业创造价值.华为云在K ...

  3. Qt-第一个QML程序-1-项目工程的建立

    这个小程序是我发的第一个完整的QMl程序,这个程序也会持续的更新,一步一步的完善起来,最后会有一个什么样的结果也是不知道,只是把自己目前掌握的QML相关的东西都慢慢的写进来,积累起来 先展示一下运行结 ...

  4. 制作一个App的完整流程是哪些

    APP开发流程其实并不复杂,但是对于客户来说,.一般移动APP开发都离不开UI设计师.前端开发.后端开发.测试专员.产品经理等,由于他们的工作性质都不一样,我们且先把APP软件开发项目分为三个阶段: ...

  5. bash特性-命令历史命令行编辑

    bash: GUI:Gnome,KDE,XFCE CLI:sh,csh,bash,ksh,tcsh,zsh shell,子shell tree:查看目录树 pstree:查看进程目录树 bash: 1 ...

  6. Jmeter 接口自动化执行报错 无法找到类或者类的方法

    写好的自动化测试脚本在PC以及mac book 都执行正确,但是放到linux集成环境时就一直报错,报错类似如下 [jmeter] // Debug: eval: nameSpace = NameSp ...

  7. 使用flume抓取tomcat的日志文件下沉到kafka消费

    Tomcat生产日志 Flume抓取日志下沉到kafka中 将写好的web项目打包成war包,eclise直接导出export,IDEA 在artifact中添加新的artifact-achieve项 ...

  8. 【递归入门】组合的输出:dfs

    题目描述 排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r < = n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数. 现要求你不用递归的方 ...

  9. Martian Addition

    In the 22nd Century, scientists have discovered intelligent residents live on the Mars. Martians are ...

  10. dataTables工作总结

    近期在工作中用到了dataTables,现在总结一下在工作中遇到的问题以及解决方法,如有不妥之处希望多多指教,定会改进. 首先这里用的是coloradmin框架,在vs环境下开发. 这里写一个容器用于 ...