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. 第八模块:算法&设计模式、企业应用 第1章 常用算法&设计模式学习

    第八模块:算法&设计模式.企业应用 第1章 常用算法&设计模式学习

  2. word record 2

    word record 2 scavenger // si ga wen ger a person, animal or insect who takes what others have left ...

  3. java后台接受web前台传递的数组参数

    前台发送:&warning_type[]=1,2 &warning_type=1,2 后台接收:(@RequestParam(value = "param[]") ...

  4. Response对象及常用方法

    void addCookie(Cookie cookie)给客户端添加一个Cookie对象,以保存客户端的信息 void addDateHeader(String name,long value) 添 ...

  5. List和String数组相互转化

    在工作中经常会遇到需要String[] 参数的地方,我们可以先定义一个list,再转成String[] 来使用,使用list的好处自然是可以随时方便的添加删除元素,下面是方法: List list = ...

  6. 小球下落 (Dropping Balls,UVA 679)

    题目描述: 题目思路: 1.直接用数组模拟二叉树下落过程 //超时 #include <iostream> #include <cstring> using namespace ...

  7. appium关键字:

    ## Appium 服务关键字 <expand_table> |关键字|描述|实例||----|-----------|-------||`automationName`|你想使用的自动化 ...

  8. 初涉 Deep Drive Dataset

    Berkeley 大学最近推出的针对自动驾驶的街景数据集,号称比 Cityscapes 数据量更大,可泛化性更好. 语义实例分割(Semantic Instance Segmentation) 数据集 ...

  9. AC 自动机——多模式串匹配

    网站上的敏感词过滤是怎么实现的呢? 实际上,这些功能最基本的原理就是字符串匹配算法,也就是通过维护一个敏感词的字典,当用户输入一段文字内容后,通过字符串匹配算法来检查用户输入的内容是否包含敏感词. B ...

  10. Halcon介绍和下载安装视频教程

    ------------------------Halcon,Visionpro高清视频教程,点击下载视频--------------------------