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. 这样的SQL居然能执行

    select /*! distinct   cities.id from cities  join countries on cities.id = countries.id limit 10 */;

  2. MyEclipse相关用法介绍

    MyEclipse相关用法介绍 ================================================================================ 编辑: ...

  3. jenkins配置git+maven+Publish over SSH

    一.配置git 1.新建项目,源码管理选择git 2.Repository URL输入git目录 3.Credentials中选择新增凭据,凭据类型选择SSH,usename输入git,passphr ...

  4. 第四模块:网络编程进阶&数据库开发 第2章·MySQL数据库开发

    01-MySQL开篇 02-MySQL简单介绍 03-不同平台下安装MySQL 04-Windows平台MySQL密码设置与破解 05-Linux平台MySQL密码设置与破解 06-Mac平台MySQ ...

  5. Android intel X86 图像渲染

    最近几天有个项目需要在intel 芯片的系统上集成我们的视频通话软件.之前只是在ARM平台上使用,对于intel 没测试过,直接运行apk后,本端渲染的图像出错,渲染出的图像很像I420被作为RGB5 ...

  6. [JSON].toString()

    语法:[JSON].toString() 返回:[String] 说明:获取[JSON]实例的字符串结果 示例: <% jsonString = "{div: 'hello word! ...

  7. java对json文件的操作

    第一步:通过FileReader读取json文件第二步:使用BufferReader,先通过I/O读取一定大小的数据缓存到数组中,然后再从数组取出数据.第三步:用一个字符串把每次传来的数据处理后写到新 ...

  8. SGU 326 Perspective(最大流)

    Description Breaking news! A Russian billionaire has bought a yet undisclosed NBA team. He's plannin ...

  9. php性能优化--opcache

    一.OPcache是什么? OPcache通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销. PHP 5 ...

  10. wf效能分析

    听从了老师的建议我请教了其他的同学,修改了代码实现了功能四,以下是我的效能测试: 1.采用ptime.exe测试的3次截图 可以看到的是三次执行时间分别为:1.449秒:0.915秒:0.871秒,取 ...