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入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- 使用git bash编译安装sysbench时遇到的坑
Preface When I was compiling the sysbench just now,I encountered some failures in the preced ...
- Selenium 入门到精通系列:三
Selenium 入门到精通系列 PS:Driver_Element 常用方法 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2 ...
- SQL语言重点学习
数据库的操作任务通常包括以下几个方面: 1.查询数据. 2.在表中插入,修改和删除记录. 3.建立,修改和删除数据对象. 4.控制对数据和数据对象的读写. 5.保证数据库一致性和完整性. SQL语言学 ...
- 【system.folder】使用说明
对象:system.folder 说明:提供一系列针对文件夹的操作 目录: 方法 返回 说明 system.folder.exists(folderPath) [True | False] 检测指定文 ...
- 《Git学习指南》学习笔记(二)
第三章 提交究竟是什么 每次提交都会生成一个40位的散列值.只要知道散列值,我们就可以恢复到该次提交,这个操作也被称之为检出(checkout)操作. 访问权限与时间戳 Git会保存每个文件原有的访问 ...
- 机器学习-聚类Clustering
简介 前面介绍的线性回归,SVM等模型都是基于数据有标签的监督学习方法,本文介绍的聚类方法是属于无标签的无监督学习方法.其他常见的无监督学习还有密度估计,异常检测等. 聚类就是对大量未知标注的数据集, ...
- LeetCode 135——分发糖果
1. 题目 2. 解答 初始化左序奖赏全为 1,从左往右遍历,如果右边的人评分比左边高,右边奖赏比左边奖赏增 1. 初始化右序奖赏全为 1,从右往左遍历,如果左边的人评分比右边高,左边奖赏比右边奖赏增 ...
- 四:ResourceManger Restart
概述: RM是yarn中最重要的组件.但是只有一个RM,因此存在单点失败的问题.RM的重启有两种方式: 1.(Non-work-preserving RM restart) 不保留工作状态的重启 ...
- 感谢信——Alpha版
作为Thunder团队的leader,当时担任组长,说实话,确实是头脑一热,可后来,在确定选题时,看着大家都有自己的想法,看着大家都那么踊跃,而我因为性格的原因,总是难以做决定,导致选题这件事就开了几 ...
- 用纯css改变下拉列表select框的默认样式(转)
用纯css改变下拉列表select框的默认样式 分享到 分类 JS学习 关键字 前端 发布 kris 2015-04-01 注意 转载须保留原文链接,译文链接,作者译者等信息. 在这 ...