第一部分 对象

[TOC]
这部分内容很多很杂,简单整理主线。

一 广义的对象

很难定义。将事物的属性抽象出来形成的一个概念。
比如鱼抽象出生活在水里,外形类似梭型的生物。一个事物可以称为一个对象,符合这个特征的对象可以称为鱼,或者说该对象的类型是鱼。又比如四边形的定义:

由不在同一直线上的不交叉的四条线段依次首尾相接围成的封闭的平面图形或立体图形叫四边形,由凸四边形和凹四边形组成.

符合上边特征的对象可以称为四边形。

类型,也可以称为类,描述了具有相同特性(数据元素)和行为(功能)的对象的集合


二 java中的对象

只关注两点:

  • 代表什么
    对象可以指代一个实例,其类型称为类。
    类具有接口(广义上的接口),描述类具有的行为特征。
比如电灯Light具有开灯和关灯的功能,那么它就具有on和off两个接口。
  • 怎么用
    用户只关心使用方法,而不关心具体的实现。
对于灯的使用者而言,只需要了解灯的这两个功能就可以了,而不需要知道灯开关的原理。

三 设计对象的类

3.1 类的构成方式

  • 由其他类组合
    理解成简单的组合就行了。比如引擎、轮胎、座位以及其他组件组合成一辆汽车。
  • 继承父类
    子类同时也是父类。
    子类可以继承父类的特性,包括成员和接口(更重要)。
    子类可以扩展出新的特性,添加子类需要的接口(说明父类不能满足这方面的需求),改变基类现有的接口(覆盖,在子类中做与父类不同的事情)。
    举例子的话,父类可以是广东地区的空调(大部分不具有制热功能),子类可以是那些同时具有制冷制热功能的空调。

3.2 在恰当的地方使用对象

  • 你需要什么
    假如你需要在某些地方使用一只猫。那么考虑需要一只猫(父类Cat),还是需要一只英短(子类British Shorthairs)。
  • 怎么用它
    当希望你的猫叫,你有call方法,
    在调用之前,编译器确保call方法存在,并对它执行类型检查。
  • 用它
    真正运行call方法时,
    通过一小段字节码计算出方法体的地址,从而执行具体的代码,假如它是英短,会发出英短的叫声。

像这样忽略类型的具体细节的代码编写方式更为简单,也更易于理解,差不多就是面向对象的大部分意义。
概念:将子类看做基类的过程称为向上转型(upcasting)


四 创建对象

4.1 用引用操作对象

java中操作的标识符(比如String str;里的str)实际上是对象的一个“引用”。

引用相当于遥控器,拥有遥控器就可以保持与空调的联系。当希望降低温度时,实际操作的是遥控器(引用),遥控器调整空调(对象)温度。

在代码中分析:

String str;//这里创建的是引用而不是对象,它并未和任何事物关联,此时操作str会报空指针异常

str=new String("lsmm");//此时str与字符串对象关联

4.2 对象存储的位置

更详细的分析可以看《深入理解Java虚拟机》读书笔记
1.寄存器
位于处理器内部,不可操作。

2.栈
存储基本类型、方法出口、对象引用等,分本地方法栈和虚拟机栈。

3.堆
存储对象实例,是GC(垃圾管理器)管理的主要区域,所有线程共享,JVM启动时创建。

4.常量
存储在方法区(可以理解为堆的一部分)中。

5.数据库、硬盘等

6.基本类型具有确定的大小,存储在栈中

数组

Java中创建数组对象实际上是创建引用数组,并且每个引用赋初始值null
cc++ 中使用的数组是内存块,应用访问自身之外的内存或者在数组初始化前使用内存会产生难以预料的后果,而在java中会抛出空指针错误。

4.3 对象的作用域

注意区分引用的作用域对象的作用域。

  • 引用的作用域很好理解。

  • 当对象被创建后,它可以作用与作用域之外;引用消失后,对象继续占据内存空间
    java特有的垃圾收集器会回收不被需要的对象。

4.5 创建新的数据类型:类

字段。
方法(返回值、参数列表)。
作用域。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,622评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,098评论 0 62
  • 春节过后很多水仙花谢了,那么水仙花谢了怎么办呢?是扔掉还是继续养,不少花友左右徘徊,不知道该怎么处理,其实水仙花凋...
    绿手指养花APP阅读 5,429评论 0 1
  • 我还是非常有毅力的,从下午到现在啥都没吃,跳了35分钟郑多燕,走了1万5! 为了自己那些高贵美丽的裙子,为了给鸟...
    猫公主喵阅读 112评论 0 0
  • 看多了青春偶像剧,俯瞰周边的故事,反省自己的路程,冠以青春的名义,纵容叛逆洒脱忤逆,却探不清明朗的奋起。 放手了爱...
    柚宝妈咪阅读 490评论 5 12