![第5面向对象上A-ppt课件_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/86a5d5b2-227d-445d-bc39-09f696b23954/86a5d5b2-227d-445d-bc39-09f696b239541.gif)
![第5面向对象上A-ppt课件_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/86a5d5b2-227d-445d-bc39-09f696b23954/86a5d5b2-227d-445d-bc39-09f696b239542.gif)
![第5面向对象上A-ppt课件_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/86a5d5b2-227d-445d-bc39-09f696b23954/86a5d5b2-227d-445d-bc39-09f696b239543.gif)
![第5面向对象上A-ppt课件_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/86a5d5b2-227d-445d-bc39-09f696b23954/86a5d5b2-227d-445d-bc39-09f696b239544.gif)
![第5面向对象上A-ppt课件_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/86a5d5b2-227d-445d-bc39-09f696b23954/86a5d5b2-227d-445d-bc39-09f696b239545.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 面向对象上5.1 类和对象 面向对象的程序设计过程中有两个重要概念:类Class和对象Object,也被称为实例,instance。 类是对某一类事物的描画,是笼统的、概念上的定义;对象是实践存在的该类事物的每个个体,因此也称实例(instance)。 构造化程序设计与OOP的区别 构造化编程的根本思想就是把大的程序划分为假设干个相对独立、功能简单的程序模块。它以过程为中心,强调的是过程,强调功能和模块化。经过一系列过程的调用和处置完成相应的义务。 面向对象编程以对象为中心,是对一系列相关对象的支配,发送音讯给对象,由对象执行相应的操作并前往结果,强调的是对象。5.1.1 定义类1、
2、类的普通方式 类的定义由类声明和类体组成,而类体又由成员变量和成员方法组成类定义举例public class Personpublic int age;public void shout()System.out.println(“oh,my god! I am “ + age);shout方法可以直接访问同一个类中的age变量 ,假设一个方法中有与成员变量同名的部分变量,该方法中对这个变量名的访问是部分变量,而不再是成员变量。age是类的属性 ,也叫类成员变量 shout是方法也叫类的成员函数详细阐明1:类声明 类声明由四部分组成:类修饰符、类关键字class、声明父类、实现接口,其普通方式如
3、下: publicabstract|final class 类名 extends 父类名 implements 接口列表 1 类修饰符public:这个public关键字声明了类可以在其他类中运用。缺省时,该类只能被同一个包中的其他类运用。abstract:声明这个类为笼统类,即这个类不能被实例化。final:声明该类不能被承继,即不能有子类。也就是说,不能用它经过扩展的方法来创建新类。2 类的关键字class在类声明中,class是声明类的关键字,表示类声明的开场,类声明后面跟着类名,按习惯类名要用大写字母开头,并且类名不能用阿拉伯数字开头。给类名命名时,最好取一个容易识别且有意义的名字,防
4、止A、B、C之类的类名。 3 声明父类extends为声明该类的父类,这阐明该类是其父类的子类。一个子类可以从它的父类承继变量和方法。extends只能实现单承继。创建子类格式:class subclass extends 父类名范例:产品管理系统中类的设计产品类(goods)衣服类手机类详细阐明2: 类体 类体可以包含三种最常见的成员: 构造器、Field(成员变量)和成员方法Field(成员变量)定义Field的语法格式如下:修饰符 Field 类型 Field名 =默许值 ;【阐明】修饰符:修饰符可以省略,也可以是public、protected、private、static、final
5、,其中public、protected、private三个最多只能出现其中之一。Field类型:Field类型可以是java言语允许的任何数据类型。Field名:只需是合法的标识符即可。默许值:定义Field还可以指定一个可选的默许值成员方法定义方法的语法格式如下:修饰符 方法前往值类型 方法名 形参列表.由多条可执行语句【阐明】修饰符的涵义和Field修饰符的涵义一样。修正CloseWare类 添加一个新的属性discount和一个方法,计算折扣后价钱的方法。price变量从哪里来的?构造器 构造器(又称为构造方法constructor)是一类特殊的方法,从功能上讲,它是用来对新创建的对象进
6、展初始化的,从方式上来讲,它有以下特点 它与类同名 它没有任何前往值 除了上述两点外,在语法构造上与普通的方法一样 范例:class A A() /初始化代码初始化代码 /其它代码其它代码 Java要求程序中每个变量在运用前都要先初始化,包括新创建的对象 在我们运用new关键字来创建一个类的对象时,类的一个构造方法会自动被调用,来完成初始化这个新对象的义务。 假设程序员没有为一个类编写构造器,那么系统会为该类提供一个默许的构造器。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。练习:定义一个汽车类 汽车类的属性: 产地、消费商、颜色、速度、档位。 汽车类的方法:点火启动、换挡、减速
7、、加速。 为汽车类创建定义构造器练习:定义一个Person类 person类的属性:姓名、年龄、性别等等 person类的方法:走路、跑步、腾跃注:在对应的方法内只写一句输出语句即可,例如System.out.println(在跑步);5.1.2 对象的产生和运用 创建对象的根本途径是构造器,经过new关键字来调用某个类的构造器即可创建这个类的实例。例:Person p; P=new Person();上面的代码也可以简写成如下方式Person p=new Person();定义一个Person类型的变量经过new 关键字调用Person类的构造器,前往一个Person实例,并将该Person
8、实例赋给p变量 类里定义的方法和Field都可以经过类或实例来调用。类或实例访问方法或Field的语法是:类.Field类.方法名实例.Field实例.方法名Person.java源文件的代码源文件的代码helloworld.java源文件的代码源文件的代码程序运转结果:程序运转结果:练习时间: 根据前面定义的类 创建一个衣服类对象 并赋予其部分属性值如下: productname 裤子 producer 七匹狼 price 100 gcolor 黑色discount 0.8f gsize 32gtype 男士产品类(goods)衣服类手机类运转结果运转结果5.1.3 对象、援用和指针对象的产
9、生Person p1 = new Person();执行完后的内存形状 类是一种援用数据类型,程序中定义的Person类型的变量实践上是一个援用,它被放在栈内存里,指向实践的Person对象;而真正的Person对象那么存放该在堆内存中。 援用变量与C言语里的指针很像,它们都是存储一个地址值,经过这个地址来援用到实践对象。程序中渣滓的产生 假设堆内存里的对象没有任何变量指向该对象,那么程序将无法再访问该对象,这个对象也就变成渣滓,java的渣滓回收机制将回收该对象,释放该对象所占的内存区。5.1.4 对象的this援用 Java提供了一个this关键字,this关键字是一个对象的默许援用。th
10、is关键字总是指向调用该方法的对象。 this关键字最大的作用就是让类中一个方法,访问该类的另一个方法或属性。为了调用jump方法,能否一定必需求重新创建一个Dog对象呢?【答案】不需求,由于在执行run方法的时候系统中曾经存在一个dog对象了。修正后的程序代码,修正后的程序代码,运用运用this关键字,关键字,来调用对象本身的来调用对象本身的jump方法方法区别dogddog 大部分时候,一个方法访问一样实例的其他方法、属性时加不加前缀的效果是完全一样的。所以前面的程序代码可以改成如下方式。 假设方法里有个部分变量和属性同名,但程序又需求在该方法里访问这个被覆盖的属性,那么必需运用this前
11、缀。阅读以下程序代码,程序运转输出什么结果?5.2 方法详解 方法是类或对象的行为特征的笼统。从功能上来看,方法类似于传统构造化程序设计里的函数。Java的方法不能独立存在,一切的方法都必需定义在类里。方法的声明方式如下:前往类型方法名方式参数方法体内容 5.2.2 方法的参数传送机制 Java言语里方法的参数传送方式只需一种:值传送。所谓值传送,就是将实践参数值的副本复制品传入方法内,而参数本身不会遭到任何影响。阅读以下程序代码程序输出结果swap方法里,a=9;b=6交换终了后,实参a的值是6;实参b的值是9对象作为函数参数 Java对于援用类型的参数传送,一样采用的是值传送的方式。 当对
12、象作为函数参数时,在函数中只能改动该对象的形状,但不能改动该对象的援用运转结果运转结果5.2.5 方法重载 Java允许同一个类里定义多个同名方法,只需形参列表不同就可。假好像一个类中包含了两个或两个以上方法的方法名一样,但形参列表不同,那么被称为方法重载。 方法重载的要求就是两同、一不同:同一个类中方法名一样,参数列表不同。运转结果虽然两个test方法的方法名一样,但由于它们的形参列表不同,所以系统可以正常区分出这两个方法类方法与实例方法 类变量与实例变量 成员变量分为类变量和实例变量,类中的方法也分为类方法和实例方法。前加static的为类方法/类变量,不加的为实例方法/实例变量。 实例方
13、法既能对类变量操作又能对实例变量操作,既能调用类方法又能调用实例方法;而类方法只能对类变量进展操作,而不能直接操作实例变量,不能直接调用实例方法。 类方法类变量不仅可以由对象调用而且还可以直接由类名调用(在同一类中,类名可以省略),而实例方法不能由类名调用 。 class Personclass Person static boolean mind; /static boolean mind; /类变量类变量String mood; /String mood; /实例变量实例变量void init(String s,boolean m) /void init(String s,boolean
14、m) /实例方法实例方法 mind=m;mind=m;mood=s;mood=s;System.out.println(m+s); System.out.println(m+s); static void print() /static void print() /类方法类方法 if(mind=true) System.out.println(“have a brain if(mind=true) System.out.println(“have a brain);); else System.out.println(“no brain else System.out.println(“no brain);); public static void main(String args) Pers
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商平台顾客关系管理策略
- 短视频与网络直播的广告投放策略
- 2020-2025年中国拔牙钳市场运营态势及发展前景预测报告
- 2025年石英沙开采项目投资可行性研究分析报告
- 生态农业建设与土地整治的多维度分析
- 2022-2027年中国汽车继电器行业运行态势及未来发展趋势预测报告
- 2025-2030年中国咏带时尚肩带行业深度研究分析报告
- 2025年直鏠焊管项目可行性研究报告
- 知识产权法律保护与企业文化建设
- 麓悦江城项目考察报告终
- 03J111-1 轻钢龙骨内隔墙
- 人教版高中数学选择性必修二导学案
- 昆明天大矿业有限公司寻甸县金源磷矿老厂箐-小凹子矿段(拟设)采矿权出让收益评估报告
- 心有榜样行有力量 -从冬奥冠军徐梦桃身上感受青春奋斗初中主题班会
- GB/T 3860-1995文献叙词标引规则
- 七年级英语下册阅读理解10篇
- 设计质量、进度保证措施
- 医院评审工作临床科室资料盒目录(15个盒子)
- Unit2 School life - 复习课课件 牛津译林版英语八年级上册
- 中医腰痛病个案护理
- 大学学院学生心理危机预防与干预工作预案
评论
0/150
提交评论