【Head First Java 读书笔记】(二)类与对象
前篇当中,代码都放在main()里面,那根本不是面向对象的做法。
椅子大战(对象如何改变你的一生)
程序规格:
在图形接口画出四方形,圆形和三角形,当用户点选图形时,图形需要顺时针转360度并依据形状的不同播放不同的AIF音效文件
这里有阿珠跟阿花两个程序员
阿珠想:这个程序需要执行什么动作?需要rotate和playSound,然后她就开始进行设计的工作。
阿花想:这个程序需要什么样的事物?有什么关键角色?她首先想到形状体(shape),还有用户,声响等对象与点击事件,然而这些对象早就已经建立好了,所以她只要专注于创建形状体就行了。
阿珠:写了rotate和playSound两个方法
阿花:为3个形状各写出一个类。每个类中都有rorate和playSound方法
如果这是需求增加,要求加上阿米虫原虫形状,用户点选时也是旋转并播放.hif声音文件。
对于阿珠来说就麻烦了,要在方法中进行判断,如果不是阿米虫先查询播放哪个AIF文件,然后播放,如果是阿米虫就播放.hif。
对于阿花来说,不需要动到已经测试好的程序就可以达到新目标,面向对象的适应性与可扩展性让她面对修改时不会太过于痛苦
如果现在需要更改阿米虫的旋转方式。
对于阿珠来说,就需要更改rotate()函数,并且要加入额外的参数,还要进行选择,本来已经测试好的东西全部都要重来一遍
对于阿花来说,只需要修改阿米虫这一个类的方法而已。其他的代码都不需要修改。
阿珠这时说,阿花的代码有重复。那么这时,阿花可以利用面对对象的继承
找出四个类的共同的部分,取出新的类,然后让四个类继承这个类,子类会自动获得父类的功能,这样就解决了代码重复的问题
子类的方法可以覆盖父类的方法,Java虚拟机在遇到不同的子类时会使用不同的方法。
覆盖的意思就是让子类重新定义继承下来的方法,以改变或延伸此方法的行为。
面对对象:
”加入新功能时不会搞乱已经写好的代码“
”将数据与操作数据的方法都摆在同一个类内“
”类可以重复运用到别的应用程序中,当写一个新类时,可以使人类有足够的扩展性,以便以后用到“
以对象来思考
当你在设计类时,要记得对象死考类的模型塑造出来的。
你可以这样看:
对象是已知的事物
对象会执行的动作

对象本身已知的事物被称为:
实例变量 instance variable
它代表对象的状态(数据)且该类型的每一个对象都会独立度拥有一份该类型的值,因此也可以把对象当作为实例。
对象可以执行的动作称为:
方法method
在设计类时,一般也会设计出操作对象数据的方法,对象带有操作或读取实例变量的方法是很常见的情形。
类与对象两者之间的不同
一个类可以有许多对象
类不是对象(却是用来创建它们的模型)
类是对象的蓝图

逃出main()
只要还呆在main()中,你就是在面对对象外的,对于货真价实的面对对象应用程序来说,需要用对象来与对象交互。
main()的两种用途:
测试真正的类
启动你的Java应用程序
真正的Java程序只会让对象与对象教会。此处所说的交互是指相互调用方法。
Java会拾荒
创建对象的时候,对象会被存放在称为堆的内存区域中。不管对象如何创建都会放在此区域中。此区域并非普通的堆,它是可回收垃圾的堆。Java会根据对象的大小来分配内存空间,当某个对象被Java虚拟机察觉不再会被使用到时,该对象就会被标记成可回收的。如果内存开始不足,垃圾收集器就会启动来清理垃圾、回收空间,让空间能够再次被利用
QAQ:
若需要全局(global)变量或方法时该如何?
在Java中的面对对象概念中并没有全局变量这回事。在任何类中的任何程序都可以存取public static 的方法。任何变量只要加上public 、static 和final 基本上都会变成全局变量取用的常量。
若有成百上千的类时要如何提交?是否恶意包装成类似单一应用程序的形式?
可以把所有的文件包装进依据pkzip格式来存档的java Archive =.jar文件,在jar文件中可以引入一个简单文件格式的文字文件,它被称为manifest,里面有定义出jar中的哪一个文件带有启动应用程序的main方法
要点:
面对对象设计扩展功能不需要改动之前已经测试好的程序代码
所有的Java程序都定义在类中。
类如同蓝图描述该类型的对象要如何创建
对象自治;你无需在意它如何完成任务。
对象有已知的事物,并能执行工作。
对象本身已知道的事物称为实例变量,它代表对象的状态。
对象可执行的动作称为方法,它代表对象的行为。
类可以继承较为抽象的父类。
【Head First Java 读书笔记】(二)类与对象的更多相关文章
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- Java 读书笔记 (二) 对象和类
Java 作为一种面向对象语言,支持以下基本概念: 多态 继承 封闭 抽象 类 对象 实例 方法 重载 对象: 是类的一个实例,有状态和行为.以人为例,黄种人.白种人.黑种人为类,每一个具体的人为类的 ...
- java读书笔记二
这是我的一些读书笔记: 我研究了一下面向对象: 面向对象符合人类看待事物的一般规律,对象的方法的实现细节是包装的,只有对象方法的实现者了解细节 我觉得面向过程是由过程.步骤.函数组成,过程是核心,面向 ...
- spring揭秘 读书笔记 二 BeanFactory的对象注册与依赖绑定
本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,而且IoC Service Pr ...
- spring揭秘 读书笔记 二 BeanFactory的对象注冊与依赖绑定
本文是王福强所著<<spring揭秘>>一书的读书笔记 我们前面就说过,Spring的IoC容器时一个IoC Service Provider,并且IoC Service Pr ...
- Java学习笔记 04 类和对象
一.类和对象的概念 类 >>具有相同属性和行为的一类实体 对象 >>实物存在的实体.通常会将对象划分为两个部分,即静态部分和动态部分.静态部分指的是不能动的部分,被称为属性,任 ...
- Java学习笔记之——类与对象
1.参数的传递方式 1)值传递 2)引用传递 2.类和对象: (1)类的定义: public class 类名{ 类型 属性1: 类型 属性2: ……… public 返回值类型 方法名1(形参){ ...
- Java基础 之二 类和对象
1.基础概念 1) 概念 简单来说,类是具有相同特征事物的抽象,比如有轮子的都可以抽象为车:对象则可以看做类的具体实例,比如创建一个法拉利的车,就是车这个类的实例. 抽象.封装.继承.多态是类的四个特 ...
- Effective Java 读书笔记之三 类和接口
一.使类和成员的可访问性最小化 1.尽可能地使每个类或者成员不被外界访问. 2.实例域决不能是共有的.包含公有可变域的类不是线程安全的. 3.除了公有静态final域的特殊情形之外,公有类都不应该包含 ...
- Java读书笔记二(封装类)
1.介绍 都知道java中基本数据类型有非常多,比方string,int--,可是基本数据类型与对象之间是不同的.但非常多情况下,我们希望将基本数据类型当作对象使用,这时候就须要用到封装类. 2.封装 ...
随机推荐
- 搭建Ganglia乱码及其他问题总汇
搭建Ganglia乱码及其他问题 搭建完Ganglia监控后图像显示正常,但是文字却显示都是小方框,最后确定是由于系统缺少字体导致的, /usr/share/fonts/ Centos默认存放字体的 ...
- C# 动态加载WebService
项目中需要用到WebService的方式来进行两个服务之间的方法调用,之前都是在项目中添加服务引用的方式来实现,但是这种方式有一个弊端,就是如果提供WebService服务的一方的IP.端口一旦变更, ...
- .NET4缓存过期策略摘录
以下是网上搜索的资料,仅供参考: 资料一:ASP.NET缓存中Cache过期的三种策略(转自51CTO) 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NE ...
- 【转】Jmeter安装成功后的目录介绍
1.bin目录 Jmeter.bat 打开Jmeter主界面 Jmeter使用的日志文件名称被定义到Jmeter.properties中,默认在Jmeter.log可查看日志 2.dosc和prin ...
- 分表分库之二:唯一ID的生成方法
一.为什么要全局唯一? 我们在对数据库集群作扩容时,为了保证负载的平衡,需要在不同的Shard之间进行数据的移动, 如果主键不唯一,我们就没办法这样随意的移动数据.起初,我们考虑采用组合主键来解决这个 ...
- angular 本地存储
localStorage四种方法: localStorage.getItem(key):获取指定key本地存储的值localStorage.setItem(key,value):将value存储到ke ...
- PHP判断文件是否被引入的方法get_included_files
<?php // 本文件是 abc.php include 'test1.php'; include_once 'test2.php'; require 'test3.php'; require ...
- Linux学习笔记 - 入门
简介 Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSI ...
- U-boot分析与移植(2)----U-boot stage1分析
我们要生成u-boot.bin文件,它首先依赖于很多.o文件和.lds链接脚本文件 我们只要找到对应的.lds链接脚本文件就可以分析u-boot的启动流程. 1.打开u-boot-1.1.6\u-bo ...
- C过程思想,根据需求写方法就行
实现的方法有多种 Comprehensive orientate 2017/10/27 13:25:07 C过程思想,根据需求写方法就行