06.第九章:对象和类

1.一些基本概念

  • 面向对象程序设计 ( OOP ) 就是使用对象进行程序设计。
  • 对象 ( object ) 代表现实世界中可以明确标识的一个实体 。 例如 : 一个学生 、 一张桌子 、 一个圆 、 一个按钮甚至一笔贷款都可以看作是一个对象 。 每个对象都有自己独特的标识 、 属性和行为 。
    • 一个对象的属性是由具有当前值的数据域来表示的 。 例如 : 圆对象具有一个数据域 radius , 它是标识圆的属性 。一个矩形对象具有数据域 width 和 height , 它们都是描述矩形的属性 。
    • — 个对象的行为是由方法定义的 。 调用对象的一个方法就是要求对象完成一个动作 。 例如 : 可以为圆对象定义一个名为 getAreaO和 getPerimeter ( ) 的 方 法 。 圆 对 象 可 以 调 用 getArea ( ) 返 回 圆 的 面 积 , 调 用getPerimeter ( ) 返回它的周长 。 还可以定义 setRadius ( radius ) 方法 。 圆对象可以调用这个方法来修改它的半径 。
  • 使用一个通用类来定义同一类型的对象 。 类是一个模板,用来定义对象的数据域是什么以及方法是做什么的 。 一个对象是类的一个实例 。 可以从一个类中创建多个实例 。 创建实例的过程称为实例化 ( instantiation ) 。
  • 可以把两个类放在同一个文件中 , 但是文件中只能有一个类是公共 ( public ) 类 。 此外 ,公共类必须与文件同名 。 因此 , 文件名就应该是 TestSimpleCircle . java , 因为 TestSimple -Circle 是公共的 。 源代码中的每个类编译成 . class 文件 。 当编译 TestSimpleCircle . java 时 ,产生两个类文件 TestSimpleCircle . class 和 SimpleCircle . class , 如图 9 - 5 所示 。
  • 要点提示 : 构造方法在使用new 操作符创建对象的时候被调用 。

    构造方法是一种特殊的方法 。 它们有以下三个特殊性 :

    • 构造方法必须具备和所在类相同的名字 。
    • 构造方法没有返回值类型 , 甚至连 void 也没有 。
    • 构造方法是在创建一个对象使用 new 操作符时调用的 。 构造方法的作用是初始化对象 。
    • 构造方法具有和定义它的类完全相同的名字 。 和所有其他方法一样 , 构造方法也可以重
      载 ( 也就是说 , 可以有多个同名的构造方法 , 但它们要有不同的签名 ) , 这样更易于用不同
      的初始数据值来构造对象 。
  • 基本类型变量和引用类型变量的区别

    对基本类型变量来说 , 对应内存所存储的值是基本类型值 。
    对引用类型变量来说 , 对应内存所存储的值是一个引用 , 是对象的存储地址 。



    赋值时:
    对基本类型变量而言 , 就是将一个变量的实际值陚给另一个变量 。i=j将基本类型变量j的内容复制给基本类型变量i。

对引用类型变量而言 , 就是将一个变量的引用赋给另一个变量 。 对引用变量来讲 , 赋值语句 c1= c 2 是将 c 2 的引用赋给 cl 。 赋值之后 , 变量c1和 c2 指向同一个对象 。


执行完赋值语句

  • 静态变量、常量和方法

    静态变量将变量值存储在一个公共的内存地址 。 因为它是公共的地址 ,所以如果某一个对象修改了静态变量的值 , 那么同一个类的所有对象都会受到影响 。
    无须创建类的实例就可以调用静态方法 ( static method ) 。



    类中的常量是被该类的所有对象所共享的 。 因此 , 常量应该声明为 final static , 例如 ,Math 类中的常量 PI 是如下定义的 :final static double PI=3.14159265358979323846

图片.png
图片.png
  • 可见性修饰符
    可见性修饰符可以用于确定一个类以及它的成员的可见性 。
    public 修饰符:表示它们可以被任何其他的类访问 。
    如果没有使用可见性修饰符 , 那么则默认类 、 方法和数据域是可以被同一个包中的任何一个类访问的 。
    private 修饰符限定方法和数据域只能在它自己的类中被访问
  • 传参(对象是传引用的拷贝,就是地址值,基本类型传值)
  • 不可变对象和类

    要使一个类成为不可变的 , 它必须满足下面的要求 :
    所有数据域都是私有的 。
    没有修改器方法 。
    没有一个返回指向可变数据域的引用的访问器方法 。

  • 变置的作用域

    实例变量和静态变量的作用域是整个类 , 无论变量是在哪里声明的 。
    如果一个局部变量和一个类变量具有相同的名字 , 那么局部变量优先 . 而同名的类变量将被隐藏 。


f.p()的打印输出是 : X 为1 , y 为 0 。

  • this引用
    • 使用 this 引用隐藏数据域。
      this 关键字可以用于引用类的隐藏數据域 。 例如 , 在数据域的 set 方法中 , 经常将数据域名用作参数名 。 在这种情况下 , 这个数据域在 set 方法中被隐藏 。 为了给它设置新值 ,需要在方法中引用隐藏的数据域名 。 隐藏的静态变量可以简单地通过 “ 类名 . 静态变量 ” 的方式引用 。
  • 使用 this 调用构造方法


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

推荐阅读更多精彩内容