版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、源自清华 值得信赖中国移动互联网研发培训专家千锋教学部JAVAJAVA的面向对象(一)的面向对象(一)源自清华 值得信赖中国移动互联网研发培训专家目标目标面向对象设计思想类和对象的理解如何创建一个对象类的成员变量和方法构造方法类的封装性源自清华 值得信赖中国移动互联网研发培训专家什么是对象什么是对象世界是由什么组成的? 名胜名胜 人人 物品物品 动物动物 ,植物,植物 在 OOP 中,现实世界的所有事物全都被视为对象源自清华 值得信赖中国移动互联网研发培训专家面向对象的概念面向对象的概念面向对象的程序设计(OOP) OOP旨在在计算机程序中模拟现实世界中的概念能够在计算机程序中用类似的实体模拟
2、现实世界中的实体设计和实现软件系统的方法在 OOP 中,现实世界的所有事物全都被视为对象何为OOP?源自清华 值得信赖中国移动互联网研发培训专家类与对象类与对象抽象共同的属性:姓名、性别、年龄、身高等 共同的行为:吃饭、睡觉、行走等 罗根夫人比尔盖茨小小贝源自清华 值得信赖中国移动互联网研发培训专家抽象抽象共同的属性:名称、腿数、主食、栖息地等 有共同的行为:发出叫声、行走、吃等源自清华 值得信赖中国移动互联网研发培训专家类类 类抽象从具体到抽象源自清华 值得信赖中国移动互联网研发培训专家类的定义类的定义类是同种对象的集合与抽象类描述对象的状态和行为系统定义的类(Java API)用户自定义的
3、类源自清华 值得信赖中国移动互联网研发培训专家对象对象型号价格里程起动停车行驶车轮数量档的数量加速刹车名字外形品种摇尾巴跑、跳犬吠 属性行为属性属性行为行为对象对象 源自清华 值得信赖中国移动互联网研发培训专家类与对象的关系类与对象的关系 类与对象的关系类对象对象的抽象类的实例化源自清华 值得信赖中国移动互联网研发培训专家类类类是对对象的描述,是对象的抽象,同一类别物体或概念的属性和行为抽象出来的描述对象是表示现实世界中某个具体的事物,是类的一个实例,是类的实例化结果不同对象之间的属性值可能相同源自清华 值得信赖中国移动互联网研发培训专家类类 类是一个模板,它拥有一大批同类的物体的共同特征 对
4、象是类的具体体现,对应一个真实存在的物体源自清华 值得信赖中国移动互联网研发培训专家v以面向过程的思想来考虑问题时,以一个具体的流程为单位,考虑它的实现办法。关心的是功能的实现。v以面向对象的思想来考虑问题时,以具体的事物为单位,考虑它的属性(特征)及行为 (动作)。v如:银行取款 面向过程:面向过程的设计思路就是首先分析问题的步骤:1、插卡,2、读卡,3、登录,4、取款,5、退卡。把上面每个步骤用分别的函数来实现,问题就解决了。 面向对象:整个取款过程针对的是取款机,取款机能插卡,能读卡,能取卡,能取款,能退卡。源自清华 值得信赖中国移动互联网研发培训专家v对象是Java程序的核心,在Jav
5、a程序中万事万物皆对象v类描述了对象的属性和对象的行为,类是对象的模板,图纸。v对象是类的一个实例,是一个实实在在的个体 。vJDK提供了很多类供编程人员使用,编程人员也可以定义自己想要的类。特征或状态特征或状态操作或行为操作或行为属性(全局变量)属性(全局变量)方法(函数)方法(函数)抽象抽象实例化实例化对象类源自清华 值得信赖中国移动互联网研发培训专家v类与对象属性namesexage方法speak()walk()Person类类人姓名性别年龄p 说话说话p 行走行走类类特征或状态特征或状态操作或行为操作或行为源自清华 值得信赖中国移动互联网研发培训专家练习练习请举例,什么是类,什么是对象
6、 例如人是类,张三是人这个类的对象,人这个类有哪些属性,有哪些方法.如何区分类与对象以汽车为例,体会类的构成和使用.源自清华 值得信赖中国移动互联网研发培训专家v定义类的语法: 修饰符 class 类名 /这里放属性和方法的声明 /*不要把方法调用等代码片段直接放在类体里,例如System.out.println(.);*/ public class Person private String name; /姓名 private boolean sex; /性别 private int age; /年龄 public void speak(String word) /说话 System.out
7、.println(name + “说:” + word); public void walk() /行走 System.out.println(“四处走动”); 源自清华 值得信赖中国移动互联网研发培训专家定义成员变量(属性)的语法: 修饰符 数据类型 成员变量名 = 初始值;成员变量的类型可以使用Java语言中的任何一种数据类型(包括基本类型和引用类型)。在定义成员变量时可以对其进行初始化。如果不对其初始化,Java会使用默认的值对其进行初始化。成员变量的作用域(可见范围)是整个类体。成员变量类型成员变量类型默认值默认值byte0short0int0long0Lcharu0000float0
8、.0Fdouble0.0Dbooleanfalse所有的引用类型null源自清华 值得信赖中国移动互联网研发培训专家DemoDemo各种数据类型的默认初始化源自清华 值得信赖中国移动互联网研发培训专家vJava的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,声明格式:v形式参数(形参):在方法被调用时用于接收外界输入的数据。v实际参数(实参):调用方法时实际传给方法的数据。v返回值类型:方法要返回的结果的数据类型。 若一个(普通)方法没有返回值,必须给出返回值类型voidv返回值:方法在执行完毕后返还给调用者的数据。vreturn 语句终止方法的运行并指定要返回的数据。修饰符1
9、修饰符2 返回值类型 方法名(形式参数列表) 程序代码; return 返回值;20(普通)方法的声明源自清华 值得信赖中国移动互联网研发培训专家v怎么根据设计好的类来创建一个对象? 利用new关键词调用类的构造方法(类的一种特殊方法)就可创建该类的一个对象。 v构造方法 构造方法的作用: 创建并初始化对象(即给 对象的属性赋初值)。 构造方法的名字和类名相同,不声明返回值类型(例如void,int),也不要在方法中返回任何数据。v两种构造方法(也叫构造器/构造函数) 显式构造方法 默认(隐式)构造方法源自清华 值得信赖中国移动互联网研发培训专家public class Person priv
10、ate String name; /姓名 private boolean sex; /性别 private int age; /年龄 public Person(String n, boolean b, int a) name = n; sex = b; age = a; public void speak(String word) /说话 System.out.println( name + “说:” + word); public void walk() /行走 System.out.println(“走走走”); public static void main(String args)
11、Person person = new Person(张三,true,18); person.speak(你好); 显式构造方法:修饰符 类名(参数类型 参数名,) .用new调用该类的构造方法来创建一个对象注意:传递的值和构造方法的参数在个数、次序和类型上要匹配普通方法用:对象变量名.方法 来调用显式构造方法显式构造方法源自清华 值得信赖中国移动互联网研发培训专家vJava的类都要求有构造方法,如果没有定义构造方法,Java编译器会为我们自动提供一个默认的无参构造方法(隐式构造方法)。 public class Person private String name; /姓名 private
12、boolean sex; /性别 private int age; /年龄 public void speak(String word) /说话 System.out.println( name + “说:” + word); public void walk() /行走 System.out.println(“走走走”); public static void main(String args) Person person = new Person(); person.walk(); 用new调用该类的默认构造方法来创建一个对象源自清华 值得信赖中国移动互联网研发培训专家v如果类中有自己编写
13、的构造方法时,编译器就不会为我们再提供那个默认的无参构造方法。此时又希望还可以用无参的构造方法来创建类的实例时,那就必须在类中明确添加这个默认构造方法。public class Person private String name; /姓名 private boolean sex; /性别 private int age; /年龄 public Person(String n, boolean b, int a) name = n; sex = b; age = a; public void speak(String word) /说话 System.out.println( name + “
14、说:” + word); public void walk() /行走 System.out.println(“the people can tread every where”); public static void main(String args) Person person = new Person(); person.speak(“你好”); 编译报错源自清华 值得信赖中国移动互联网研发培训专家v取名要见名知意v类名的首字母大写v变量名和方法的首字母小写v采用驼峰式命名法源自清华 值得信赖中国移动互联网研发培训专家v创建一个学生(Student)类: 学生应该有姓名(name)、年
15、龄(age)、性别(sex),班级号(classNum),座位号(sno)。 提供一个含参的构造方法用来创建一个学生对象。 提供一个方法(displayInfo()用来显示这个学生的姓名、年龄、性别、所在的班级和他的座位号。 在同一个类和另一个场景类(Client.java)中分别写一个main方法创建两个学生对象,分别调用displayInfo()方法显示各自的信息。源自清华 值得信赖中国移动互联网研发培训专家综合练习综合练习 定义一个士兵类Soldier 定义若干个属性 定义若干个方法(用来对属性进行操作,选一个方法做重载,写不少于3个重载的方法)printInfo. 定义构造方法(用来对
16、属性进行初始化等) 定义一个场景类(含有main方法的类)进行测试(创建对象,调用方法) 分别以一个java文件和两个java文件来实现以上功能,对比其异同.源自清华 值得信赖中国移动互联网研发培训专家v类描述了对象的特征和对象的行为,类是对象的模板,图纸。v对象是类的一个实例,是一个实实在在的个体 。(普通)方法的声明格式.构造方法的声明格式. 两种构造方法:显式构造方法和隐式(默认)构造方法。 构造方法的作用: 构造并初始化对象。小结: 类与对象源自清华 值得信赖中国移动互联网研发培训专家v方法的调用 构造方法:用new 调用。 普通方法:用对象变量名.方法名(实参列表) 调用。 静态方法
17、: 在类内直接用方法名调用.小结: 类与对象源自清华 值得信赖中国移动互联网研发培训专家Java语言中除8种基本数据类型以外的数据类型称为引用数据类型 引用类型数据以对象的形式存在 引用类型变量的值是某个对象的句柄(对某个对象的引用),而不是对象本身 声明引用类型变量时,系统只为该变量分配引用空间,并未创建一个具体的对象 源自清华 值得信赖中国移动互联网研发培训专家public class MyDate private int day = 12; private int month = 6; private int year = 1900; public MyDate(int d, int m
18、, int y) year = y; month = m; day = d; public void display() System.out.println(year + / + month + / +day); public static void main(String args) MyDate m; m = new MyDate(21, 7, 2014); m.display(); 源自清华 值得信赖中国移动互联网研发培训专家为引用类型变量分配引用空间 MyDate m; MyDate m; 创建新对象-首先为新对象分配内存空间,并进行属性(实例变量)的默认初始化 new MyDate
19、(22, 9, 2001);m000daymonthyearm源自清华 值得信赖中国移动互联网研发培训专家复习Java引用类型成员变量默认初始化原则成员变量类型 取值 byte0 short0 int 0 long0L charu0000 float0.0F double0.0D booleanfalse 所有引用类型null 源自清华 值得信赖中国移动互联网研发培训专家进行属性(成员变量)的显式初始化,显式初始化取值来自于类的定义中属性声明部分 private int day = 12; private int month = 6; private int year = 1900;m1261
20、900daymonthyear源自清华 值得信赖中国移动互联网研发培训专家执行构造方法体中的语句public MyDate(int y, int m, int d) year = y; month = m; day = d; m2172014daymonthyear源自清华 值得信赖中国移动互联网研发培训专家为引用类型变量m赋值m = = new MyDate(22, 9, 2001);0 x3a478bm2292001daymonthyear0 x3a478b源自清华 值得信赖中国移动互联网研发培训专家另一个引用类型的例子另一个引用类型的例子Student.java-自定义的一个类,有四个属
21、性,并具有各自的存取方法。有一个构造器,用于在创建对象时初始化四个属性TestStudent.java-一个用于测试引用类型的程序。见下页.源自清华 值得信赖中国移动互联网研发培训专家对象的构造和初始化对象的构造和初始化Student s1;-为引用类型变量分配引用空间s1 = new Student (Lisa, Male,1,18);创建一个新的对象,并进行属性(实例变量)的默认初始化 nulls1nullnull0namesexgrade0age源自清华 值得信赖中国移动互联网研发培训专家对象的构造和初始化对象的构造和初始化进行显式初始化执行构造方法:将传递进来的四个参数的值分别赋给四个
22、属性s1 = new Student(Lisa,FeMale,1,18);nulls1Lisa567a1namesexgrade18age12d4FeMale源自清华 值得信赖中国移动互联网研发培训专家对象的构造和初始化对象的构造和初始化最后,对引用类型变量s1赋值。将新创建的Student对象的存储空间的首地址赋给s10 x1a4afb12d4567a1namesexgrade18ages10 x1a4afbLisamale源自清华 值得信赖中国移动互联网研发培训专家v方法的重载指的是一个类中可以定义有方法名相同,但参数列表不同的功能相近的多个方法,调用时系统会根据不同的参数列表选择对应的方
23、法。v按照”最佳匹配性的原则执行” day07.Client01.javav参数列表不同是指参数的类型,个数或顺序不同;v类中定义的普通方法、构造方法都可以重载;v重载方法的其他组成部分可以相同也可以不同;复习: 方法重载(overload)源自清华 值得信赖中国移动互联网研发培训专家思考思考v方法名相同,参数列表也相同,返回值类型不同算不算重载?v方法名相同,一个有返回值类型声明,一个没有算不算重载呢?v可否定义一个与构造方法名相同,参数列表不同的,返回值类型为void的方法?v方法名相同,参数列表也相同,可见性(访问修饰符) 不同算不算重载?源自清华 值得信赖中国移动互联网研发培训专家v例
24、如:在Person类中添加如下方法: void info() System.out.println(“My id is”+id); void info(String t) System.out.println(t+“ ”+id+” ”+age);源自清华 值得信赖中国移动互联网研发培训专家练习练习定义Computer,定义接收不同参数列表的add方法,计算两个数的和并且返回回来,参数分别为(byte,byte),(int,int) ,(double,double)源自清华 值得信赖中国移动互联网研发培训专家DemoDemo传一个参数,返回自增值,传2个参数,返回两个参数相加,传3个参数,返回3
25、个参数的立方和1,2,3= 1*1*1+2*2*2+3*3*3源自清华 值得信赖中国移动互联网研发培训专家 格式: 构造方法重载,参数列表必须不同 注意: 可以在构造方法的第一行 使用this()关键字调用其它(重载的)构造方法 作用1: 实现代码重用 构造方法重载举例: public class Personpublic Person(String name, int age, Date d) public Person(String name, int age) public Person(String name, Date d) 源自清华 值得信赖中国移动互联网研发培训专家作用2: 接受常用的不同类型,不同数量的初始化参数FileFile(Fileparent, Stringchild) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。FileFile(Stringpathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。FileFile(Stringparent, Stringchild) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。源自清华 值得信赖中国移动互联网研发培训专家vjava.lang 包含一些Java语言的核心类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026ibm面试题及答案
- 2026java反射原理面试题目及答案
- 2026linux面试题及答案java
- 2026年特种设备作业人员考试特种设备操作与评估试卷(附答案)
- 初中七年级上学期英语 Unit 3:探索我的校园 教案
- 稻米品牌化种植的源头质量管控体系构建(年)行业报告
- 2026年金属非金属矿山安全生产(小型露天采石场)考试试题(含答案)
- 初中七年级地理 探究地理环境知识清单
- 2026年教师资格证初中综合素质试题及答案
- 2026年基层法律工作者考试(民事法律实务)试题及答案
- 2026湖南衡阳市衡东县卫健系统招聘专业技术人员46人模拟试卷完整附答案详解
- 2026-2030国内铁路电气设备行业市场发展分析及竞争格局与投资机会研究报告
- 2026-2030中国建筑信息模型(BIM)行业发展状况与前景趋势研究报告
- 水电站运行人员考试题及答案(教学参考)
- 2026年营养师《公共营养》测试卷(含答案)专项训练
- 2026年甘肃省三支一扶招聘考试(1800人)考试参考题库及答案详解
- 2026年学校会计高频面试题包含详细解答
- 初中八年级历史《民族团结与祖国统一》单元整体导学案
- 2026年7月自考13811绩效管理押题及答案
- 多病共存患者安全管理
- 2026年新教材人教PEP版(2024)四年级下册英语期末测试卷(含答案)
评论
0/150
提交评论