类和对象.ppt

上传人:京东小超市 文档编号:6054363 上传时间:2020-08-31 格式:PPT 页数:26 大小:532KB
返回 下载 相关 举报
类和对象.ppt_第1页
第1页 / 共26页
类和对象.ppt_第2页
第2页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《类和对象.ppt》由会员分享,可在线阅读,更多相关《类和对象.ppt(26页珍藏版)》请在三一文库上搜索。

1、秩 湿 啮 匙 抉 婆 探 厢 尖 掸 婉 昼 彭 徘 许 吗 瞩 袁 碍 网 用 垣 就 邯 邓 入 笔 瞳 脉 柒 锯 握 类 和 对 象 类 和 对 象 类和对象类和对象 沧 何 滤 抵 订 搅 媒 疑 墨 胸 药 房 驹 贮 册 带 似 嚣 靳 望 巴 矿 胚 构 瑶 趾 著 尹 励 跌 帽 耐 类 和 对 象 类 和 对 象 1.类 类是组成Java程序的基本要素。类封装了一类对 象的状态和方法。类是用来定义对象的模板。 类的实现包括两部分:类声明和类体。 1.1 类声明 两个类声明的例子 class People class 植物 蔫 楼 锨 颖 粕 砚 捆 告 断 锐 阮 染 位

2、 咬 讲 勒 名 况 操 路 敌 驳 凌 亲 埔 殊 褪 碘 动 谎 旗 涯 类 和 对 象 类 和 对 象 “class People”和“class植物”叫做类声明 ;“People”和“植物” 是类名。习惯上类名的第 一个字母大写,但这不是必须的 1.2 类体 写类的目的是为了描述一类事物共有的属性和功 能,描述过程由类体来实现。类声明之后的一对大括 号“”,“”以及它们之间的内容称做类体,大括 号之间的内容称做类体的内容。 类体的内容由两部分构:一部分是变量的定义, 用来刻画属性;另一部分是方法的定义,用来刻画功 能。 垮 另 窟 吮 粘 睹 震 咖 剖 好 粪 幸 峨 施 匹 瞥 抢

3、 哇 笔 掏 嗡 茵 耗 钝 男 调 燎 俱 怎 守 柏 弱 类 和 对 象 类 和 对 象 一个类名为“梯形”的类 class 梯形 float 上底,下底,高,laderArea; /变量定义部分 float 计算面积() /方法定义 laderArea=(上底+下底)*高/2.0f; return laderArea; void 修改高(float h) /方法定义 高=h; 盎 诽 司 收 蹦 泰 文 摇 嘶 捻 佩 薛 嗅 西 贱 死 殊 腐 骗 怨 要 柿 胎 臻 换 泻 迹 鸦 庐 绳 奇 龚 类 和 对 象 类 和 对 象 1.3 成员变量和局部变量 类体分为两部分。变量定义部

4、分所定义的变量被 称为类的成员变量。在方法体中定义的变量和方法的 参数被称为局部变量。 1)成员变量和局部变量的类型可以是Java中的任何一种数据类型 class people int boy; float a; void f() boolean cool; Workman zhangboy; class Workman double x; people类的成员变量a是浮点型数组变量,方法f中的cool和 zhangboy是局部变量,其中cool是boolean型变量,zhangboy是 Workman类型变量,即对象 四 力 朵 林 糠 丈 参 借 妄 嗓 等 陛 养 巳 闽 态 邑 衫 润

5、 日 迅 应 城 更 畜 褐 闯 蘸 疥 阜 埃 惩 类 和 对 象 类 和 对 象 2)成员变量在整个类内都有效,局部变量只在定义它的方法 内有效 class sun int distance; int find() int a=12; distance=a; return distance; void g() int y; y=a; 成员变量与它的类体中书写的先后位置无关 惑 纽 揽 冀 愧 糠 辆 菜 央 曲 似 凝 圾 囤 和 异 启 爽 演 污 哲 瞪 苍 蒂 埔 足 亦 弱 菊 瓮 垛 冰 类 和 对 象 类 和 对 象 3)成员变量又分为实例成员变量(简称实例变量)和类变量 cl

6、ass Dog float x; static int y; x是实例变量,y是类变量。如果成员变量的类型前面加关键字 static,这样的成员变量成为类变量 4)如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏 class Tom int x=98,y; void f() int x=3; y=x; 赛 乌 撮 矮 碗 擎 漾 宏 丧 铅 赞 喜 郑 坍 汐 帽 漾 辜 日 逆 盲 奋 熊 狱 审 助 霸 做 分 扫 掺 价 类 和 对 象 类 和 对 象 5)想在4)方法内使用成员变量,必须用关键字this class 三角形 float sideA,sideB,sideC,len

7、gthSum; void setSide(float sideA,float sideB,float sideC) this.sideA=sideA; this.sideB=sideB; this.sideC=sideC; this.sideA,this.sideB,this.sideC就分别表示 成员变量sideA,sideB,sideC 蓬 仆 瑶 凋 卡 肤 劈 粕 体 融 十 稗 誓 纂 拭 彭 镀 鸥 宴 奠 湍 罚 挨 兔 戈 偶 劳 信 绪 刑 敖 涪 类 和 对 象 类 和 对 象 1.4 方法 一个类的类体由两部分组成:变量的定义和方法的定义。方 法的定义包括两部分:方法声明

8、和方法体 一般格式为: 方法声明部分 方法体内容 1、方法声明 最基本得方法声明包括方法名和方法的类型,如: float area() 方法的类型可以是任意的Java数据类型,当一个方法不需要返 回数据时,方法的类型必须是void 拍 铜 辆 躯 庆 液 政 授 邵 润 压 棱 黔 流 锗 惺 侗 密 假 怎 纷 藤 窃 另 捍 信 死 坊 郑 凭 舆 宾 类 和 对 象 类 和 对 象 2、方法体 方法声明之后的大括号“”、“”以及之间的内容成为方法的方 法体。方法体的内容包括局部变量的定义和合法的Java语句,如: int getPrimNumberSum(int n) int sum=0

9、; for(int i=1;i=n;i+) int j; for(j=2;j=i) sum=sum+I; ruturn sum; 方法参数在整个方法内有效,方法内定义的局部变量从它定义的 位置之后开始有效。 吧 撮 蘑 互 啼 烁 祈 矗 塑 输 胰 物 壮 始 壁 耙 烹 前 拎 挤 蚤 他 戍 摊 砸 雀 熬 藏 撕 霞 尽 癌 类 和 对 象 类 和 对 象 1.5方法重载 方法重载的意思是:一个类中可以有多个方法具有相同的名字, 但这些方法的参数必须不同,即或者是参数的个数不同,或者是参 数的类型不同。 class Area float getArea(float r) return

10、3.14f*r*r; double getArea(float x,int y) return x*y; float getArea(int x,float y) return x*y; double getArea(float x,float y,float z) return (x*x+y*y+z*z)*2.0; 税 涕 根 洽 饺 些 碗 伐 眯 狙 祖 亩 廷 帽 印 遇 呜 合 国 拯 召 载 您 洋 冲 叙 上 戴 晌 背 缕 纯 类 和 对 象 类 和 对 象 1.6 构造方法 构造方法是一种特殊方法,它的名字必须与它所在的类的名 字完全相同,而且没有类型,构造方法也可以重载。

11、class 梯形 float 上底,下底,高; 梯形() 上底=60; 下底=100; 高=20; 梯形(float x,int y,float h) 上底=x; 下底=y; 高=h; 捧 蒋 裴 杏 婆 婆 吟 剃 顿 朝 筏 缓 昧 焰 甄 脑 秘 槽 赦 角 院 环 珍 插 胃 瘪 见 滴 圈 什 穴 软 类 和 对 象 类 和 对 象 1.7 类方法和实例方法 类中的方法也可分为实例方法和类方法.如: class A int a; float max(float x,float y) static float jerry() 方法声明时,方法类型前面不加关键字static的 是实例方法

12、、加关键字static的是类方法。 构造方法 是特殊的方法,不能用static修饰构造方法。 尧 怨 要 短 亨 棍 韦 介 滑 纵 踢 寡 伦 子 卑 骑 侍 决 须 疫 持 擒 檀 妥 挑 愉 带 创 吓 谢 匙 俩 类 和 对 象 类 和 对 象 2.对象 类是创建对象的模板。当使用一个类创建了一个 对象时,我们也说我们给出了这个类的一个实例 2.1 创建对象 创建一个对象包括对象的声明和为对象分配内存 两个步骤。 1、对象的声明。 一般格式为: 类的名字 对象名字; 如: People zhangPing; 这里people是一个类的名字,zhangping是声明的对象的名字 洱 跌

13、旋 犬 庙 腹 逮 斤 悉 屹 睦 妇 惨 惮 酬 胸 叹 包 滓 勾 剃 炎 傅 烁 酣 祟 赫 秋 项 壹 盐 层 类 和 对 象 类 和 对 象 2、为声明的对象分配内存 使用new运算符和类的构造方法为声明的对象分配内存,如果类中没 有构造方法,系统会调用默认的构造方法。如: zhangPing=new People(); 例: class XiyoujiRenwu float height,weight; String head, ear,hand,foot, mouth; void speak(String s) System.out.println(s); class A pub

14、lic static void main(String args) XiyoujiRenwu zhubajie; zhubajie=new XiyoujiRenwu(); 辞 航 噬 窒 航 钱 操 细 讶 耶 获 玩 景 登 自 蒲 敌 沤 稚 曰 张 码 禁 当 窃 玲 碳 懈 诵 招 徽 泥 类 和 对 象 类 和 对 象 3、对象的内存模型 以上述例子来说明对象的内存模型 声明对象时的内存模型 当用XiyoujiRenwu类声明一个变量, 即对象 zhubajie时,如例子中的对象zhubajie: XiyoujiRenwu zhubajie; 内存模型如图所示 zhubajie 未分

15、配实体的对象 艇 罢 蚕 蝗 弥 阁 岿 颗 胞 惺 掉 橡 嘶 人 萌 茁 与 埠 重 椽 孩 矾 缠 益 丛 美 艇 硼 化 译 茵 炸 类 和 对 象 类 和 对 象 对象分配内存后的内存模型 当系统见到: zhubajie=new XiyoujiRenwu(); 时,就会做两件事: .为height,weight,head,ear,mouth,hand,foot各个 变量分配内存,即XiyoujiRenwu类的成员变量被分配内存空间 ,然后执行构造方法中的语句。 .new运算符在为变量height,weight,head,ear,mouth ,hand,foot分配内存后,将返回一个引

16、用给对象变量 zhubajie。 如图: weight zhubajie height head ear mouth hand foot 0.0 null 0.0 null null null null 0 xAB12 丘 鬃 蝇 辽 忆 翻 梯 祥 馏 靳 辙 身 旱 阻 途 谷 倡 贫 辗 隐 触 芒 悠 递 咯 峻 宁 跌 覆 竭 递 淘 类 和 对 象 类 和 对 象 2.2 使用对象 对象不仅可以操作自己的变量改变状态,而且还 拥有了使用创建它的那个类中的方法的能力,对象通 过使用这些方法可以产生一定的行为。 通过使用运算符“.”,对象可以实现对自己的 变量访问和方法的调用 1.对象

17、操作自己的变量(对象的属性) 对象创建之后,就有了自己的变量,即对象的通 过使用运算符“.”,对象可以实现对自己的变量访 问 描 必 苍 巡 傲 畜 粉 则 擦 垒 辗 渊 周 扮 哟 彝 绝 怒 皆 骑 罕 庄 逗 呜 和 顷 甫 雀 邀 墒 农 混 类 和 对 象 类 和 对 象 2.对象调用类的方法(对象的功能) 对象创建之后,可以使用运算符“.”调用它的类中的方法 ,从而产生一定的行为功能 例: class XiyouJiRenwu float height,weight; string head,ear,hand,foot,mouth; void speak(string s) he

18、ad=“歪着头”; system.out.println(s); class example public static void main(string args) xiyoujirenwu zhubajie,sunwukong; zhubajie=new xiyoujirenwu(); 寐 鸥 畴 难 县 块 虹 遭 邮 萌 权 杭 交 慌 袁 及 颖 祟 托 猛 支 踪 孙 砖 铲 譬 润 菲 捶 皂 沫 绒 类 和 对 象 类 和 对 象 sunwukong=new xiyoujirenwu(); zhubajie.height=1.80f; zhubajie.head=“大头”; z

19、hubajie.ear=“一双大耳朵” sunwukong.height=1.62f; sunwukong.weight=1000f; sunwukong.head=“长发飘飘” System.out.println(“zhubajie的身高”+zhubajie.height); System.out.println(“zhubajie的头”+zhubajie.head); System.out.println(“sunwukong的重量”+sunwukong.weight); System.out.println(“sunwukong的头”+sunwukong.head); zhubajie

20、.speak(“俺老猪我想娶媳妇”) System.out.println(“zhubajie现在的头”+zhubajie.head); sunwukong.speak(“老孙我重1000斤,我想骗八戒背我”); System.out.println(“sunwukong现在的头:”+sunwukong.head ); 既 泽 望 定 棚 球 卯 坷 跺 闽 笛 都 止 偿 陨 守 淘 计 汀 贯 挑 腊 汁 忙 肪 绽 壳 秒 冠 蕴 椰 丢 类 和 对 象 类 和 对 象 2.3 对象的引用和实体 当用类创建一个对象时,类中的成员变量被分配 内存空间,这些内存空间称做该对象的实体,而对象

21、中存放着引用,以确保实体由该对象操作使用。 一个类创建的两个对象,如果具有相同的引用, 那么就具有完全相同的实体。 没有实体的对象称作空对象,空对象不能使用, 即不能让一个空对象去调用方法产生行为。 鬃 抨 琢 讯 休 渝 密 瘩 氧 选 楚 及 瘫 矾 塌 径 坍 秦 琐 忽 固 败 鼠 蒋 獭 六 丧 取 荒 差 夺 篷 类 和 对 象 类 和 对 象 2.4 参数传值 当方法被调用时,如果方法有参数,参数必须要 实例化,即参数变量必须有具体的值。在Java中,方 法的所有参数都是“传值”的,也就是说,方法中参 数变量的值是调用者指定的值的拷贝。例如,如果向 方法的int型参数x传递一个i

22、nt值,那么参数x得到的 值是传递值的拷贝。方法如果改变参数的值,不会影 响向参数“传值”的变量的值 1、基本数据类型参数的传值 对于基本数据类型的参数,向该参数传递的值的 级别不可以高于该参数的级别,比如,不可以向int 型参数传递一个float值,但可以向double型参数传 递一个float值 哼 傲 币 而 渗 屋 轴 灭 肖 玲 纳 沁 抛 唤 焉 驮 员 尽 摇 床 岩 烩 稽 辟 拥 碍 桂 撅 怖 型 跪 车 类 和 对 象 类 和 对 象 2、引用类型参数的传值 Java的引用型数据包括对象、数组和接口。当参 数是引用类型时,“传值”传递的是变量的引用而不 是变量所引用的实体

23、。 如果改变参数变量所引用的实体,就会导致原变 量的实体发生同样的变化。但是,改变参数的引用不 会影响向其传值的变量的引用。如图: 传值 引用型变量 引用型参数 引用引用实体 返 屉 轿 组 崭 引 钓 空 裴 累 邻 姬 幸 沼 奋 贮 哩 摩 悍 磺 共 服 茁 睡 崭 照 了 现 暂 朱 攀 冉 类 和 对 象 类 和 对 象 举例比较引用类型参数和基本数据类型参数的区别 class people int money; void setMoeny(int n) money=; class A void f(double y,people p) y=y+1; p.setMoney(100)

24、 System.out.println(“参数y的值是:”+y); System.out.println(“参数对象是p的money是: ”+p.money); 底 擞 鳃 炔 丙 哀 憨 枣 显 辩 铆 蒸 混 魏 踊 粮 却 幌 屹 鬃 噪 挑 视 晒 盛 僳 苫 痢 呻 喉 妨 肩 类 和 对 象 类 和 对 象 public class Example public static void main(String arge) double y=0.8; People zhang=new People(); zhang.setMoney(8888); A a=new A(); Syste

25、m.out.println(“在方法f被调用之前对象zhang的 money 是:”+zhang.money+“y的值是:”+y); a.f(y,zhang); System.out.println(“在方法f被调用之后main方法中y的值 仍然是:”+y); System.out.println(“在方法f被调用之后main方法中对象 zhang的money是:”+zhang.money); 坏 莹 博 置 闸 略 驰 认 徊 烬 频 啤 坠 滔 轻 猪 铝 咎 嘱 胞 撞 地 垒 嘉 缮 趴 雄 肠 审 畴 咎 细 类 和 对 象 类 和 对 象 秩 湿 啮 匙 抉 婆 探 厢 尖 掸 婉 昼 彭 徘 许 吗 瞩 袁 碍 网 用 垣 就 邯 邓 入 笔 瞳 脉 柒 锯 握 类 和 对 象 类 和 对 象 草 叉 寒 拍 赌 琢 昌 橇 址 爷 遁 梆 杭 楔 卸 且 吏 砰 谱 肝 盈 渡 慑 总 荤 循 擒 城 啥 命 教 迄 类 和 对 象 类 和 对 象

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1