一些对象导论小概念

抽象过程

Alan Kay 曾经总结了第一个成功的面向对象语言,同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了一种纯粹的面向对象程序设计方式:

1.万物皆对象。

2.程序是对象的集合,它们通过发送消息来告知彼此所要做的。

3.每个对象都有自己的由其他对象所构成的存储。

4.每个对象都拥有类型.

5.某一特定类型的所有对象都可以接受同样的消息。

被隐藏的具体实现

Java用三个关键字在累的内部设定边界: publicprivate, protected.

public: 紧随其后的元素对任何人都是可以用的。

private: 除类型创建者和类型的内部方法之外的任何人都不能访问的元素。 如果试图访问,就会在编译时报错。

protected: 于private相当,差别在于继承的类可以访问protected成员,但是不能访问private成员。

Java的默认访问权限,当没有使用任何access specifier时,权限为包访问权限,即同一个包的成员可以访问,不同包的成员如同指定了private一样。

复用具体实现

由于继承在面向对象程序设计中如此重要,所以被高度强调,程序员就会有这样的印象:处处都应该使用继承。 实际上,在建立新类的时候,应该首先考虑组合,因为他更加简单灵活。如果采用这种方式,设计会变得更加清晰。一旦有了经验之后,便能够看出必须使用继承的场合了。

继承

导出类与基类具有相同的类型。

有两种方法可以使积累与导出类产生差异:

1. 直接在导出类中添加新方法,这些方法并不是基类的一部分。(is-like-a super class)

2. 改变现有基类的方法的行为,即覆盖(overriding) (is-a super class)

伴随多态的可互换对象

在OOP中,程序直到运行时才能够确定代码的地址,所以当消息发送到一个泛化对象时,必须采用其他的机制。

“后期绑定”:当向对象发送消息时,被调用的代码知道运行时才能确定。编译器确保被调用方法的存在并检查,但并不知道被执行的确切代码。

为了执行后期绑定,Java使用一小段特殊的代码代替绝对地址的调用,动态绑定在Java中是默认行为(不同于c++需要添加virtual关键字)

转型

把导出类看做他的基类的过程称为向上转型(upcasting)这个是安全的 

把基类看做导出类的过程称为向下转型, 除非确切的知道所要处理的对象的类型,否则向下转型几乎是不安全的。

单根继承结构

在Java中(事实上包括除C++意外的所有OOP语言),所有的类都继承Object类。

对象的创建和生命期

Java在堆(HEAP)的内存池中动态的创建对象。在这种方式中,知道运行时才知道需要多少对象,他们的生命期如何,以及他们的具体类型是什么。Java完全采用了动态内存分类方式(基本类型只是一种特例),每当想创建一个对象时,就要使用new关键字来构建对象的实例。

Java的垃圾回收器被设计用来处理内存释放问题。垃圾回收器知道对象什么时候不被再使用,并自动释放对象占的内存,这一点同 “所有对象都继承单根基类Object” 以及 “只能在堆上创建对象” 2个特性结合起来,是的Java比C++编程要简单的多。

异常处理

异常是一种对象,它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的异常处理器“捕获”。异常提供了一种从错误状态进行可靠恢复的途径。现在不再是只能退出程序,你可以进行校正,并且恢复程序运行。

Java一开始就内置了异常处理,而且强制你使用它。

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

推荐阅读更多精彩内容

  • 第一章 对象导论 对象具有状态、行为和标识。这意味着每一个对象都可以拥有内部数据和方法,并且每一个对象都可以唯一地...
    niaoge2016阅读 814评论 0 0
  • 由于最早学的编程语言都是面向过程的,导致自己先入为主,对面向过程的印象特别深刻。而面向对象,虽然一直都有学习和用到...
    cynthia猫阅读 426评论 0 0
  • C++类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心...
    863cda997e42阅读 633评论 0 4
  • { "Unterminated string literal.": "未终止的字符串文本。", "Identifi...
    栗子雨阅读 7,827评论 0 3
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,565评论 1 114