20165218 2017-2018-1 《Java程序设计》第三周学习总结
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类方法
友好| 不用private,public ,protected修饰 | 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程序设计》第三周学习总结的更多相关文章
- Java程序设计第三周学习总结
1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
- 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈
对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...
- 20165218 2017-2018-1 《Java程序设计》第一周学习总结
20165218 2017-2018-1 <Java程序设计>第一周学习总结 教材学习内容总结 第一章.Java入门 1. Java特点 Java具有简单.面向对象.平台无关.多线程.动态 ...
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- 「专题训练」Hard problem(Codeforces Round #367 Div. 2 C)
题意与分析 题意:给出\(n\)个字符串,可以反转任意串,反转每个串都有其对应的花费\(c_i\).经过操作后是否能满足字符串\(\forall i \in [1,n] \text{且} i \in ...
- VIN码识别/车架号OCR识别:快速占领汽车后市场数据入口
大数据时代,企业在数据入口方面的竞争越来越激烈,这种对于入口级的大数据“争夺战”,让很多企业在数据挖掘和收集的技术方面开始加快更新速度. 在当前IT行业激烈竞争环境之下,对于入口产品的控制成为了大数据 ...
- 【paging_Class 分页类】使用说明
类名:paging_Class 说明:分页类 注意: 1) 支持百万级数据分页 2) 支持多种类型的SQL语法,比如 Left Join 等. 3) 自动保存查询中的错误情况,记录保存在:/Cache ...
- js for循环实例
1.求1-100的寄数和? //2.奇数求和 var ppt=0 for(var i=1;i<=100;i+=2){ ppt+=i } 2.求1-100的偶数和 var num=0 for(va ...
- JavaScript 之 对象/JSON/数组
对象 简单说,所谓对象,就是一种无序的数据集合,由若干个“键值对”(key-value)构成. var obj = { p: 'Hello World' }; 上面代码中,大括号就定义了一个对象,它被 ...
- cygwin—excellent work!
使用cygwin的好处在于可以避免直接使用linux同时又能最大限度的节省资源,共享windows的资源. 安装cygwin 安装安简单,当然,你首先需要使用163或者国内或者亚洲比较好的镜像作为下载 ...
- django 连接mysql报错
原因: 问题1. 即从mysql5.7版本之后,默认采用了caching_sha2_password验证方式. 问题2. 然后在执行 python manage.py makemigrations依 ...
- OpenPAI大规模人工智能平台安装部署文档
环境要求: 如果需要图形界面,需要在Ubuntu系统安装,否则centos系统安装时是没有问题的(web端和命令行进行任务提交) 安装过程需要有另外一台控制端机器(注意:区别于集群所在的任何一台服务器 ...
- Python3 数据类型-字典
字典是一种可变数据类型,且可存储任意类型对象. 字典使用大括号"{}"括起来,由键(key)和值(values)组成,键只能使用不可变类型定义,值可以使用可变类型{'键':'值'} ...
- Thunder团队第五周 - Scrum会议4
Scrum会议4 小组名称:Thunder 项目名称:i阅app Scrum Master:李传康 工作照片: 邹双黛同学在拍照,所以不在照片内. 参会成员: 王航:http://www.cnblog ...