《【教学课件】第三章面向对象的核心特征.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三章面向对象的核心特征.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Computer_yuComputer_yuComputer_yuComputer_yu第三章 面向对象的核心特征时间安排:5课时Computer_yuComputer_yuComputer_yuComputer_yu本章目标理解对象理解类理解抽象和封装理解对象与类之间的关系理解继承、多态理解抽象类和最终类2Computer_yuComputer_yuComputer_yuComputer_yu3.1 类和对象3你看到什么?你看到什么?Computer_yuComputer_yuComputer_yuComputer_yu4Computer_yuComputer_yuComputer_yuCo
2、mputer_yu对象5“对象是存在的具体实体,具有明确定义的状态和行为。对象是存在的具体实体,具有明确定义的状态和行为。”Computer_yuComputer_yuComputer_yuComputer_yu类是具有相同特性的对象的抽象描述是对象的模版不参与程序运行一种数据类型6Computer_yuComputer_yuComputer_yuComputer_yu封装性7“隐藏属性、方法或实现细节的过程称为封装。隐藏属性、方法或实现细节的过程称为封装。”Computer_yuComputer_yuComputer_yuComputer_yu继承性提供从父类创建新类的机制单重继承代码复用子
3、类是父类8Computer_yuComputer_yuComputer_yuComputer_yu多态性类中方法执行的多样性重载和覆盖(改写)9Computer_yuComputer_yuComputer_yuComputer_yu定义类类声明 成员变量;成员方法;修饰符 class 类 extends 父类 implements 接口列表 10Computer_yuComputer_yuComputer_yuComputer_yu声明成员变量同一般变量的声明修饰符 static final transient 类型 变量名;必须声明在类体中,且不在方法中。public class Date
4、int year,month,day;11Computer_yuComputer_yuComputer_yuComputer_yu声明成员方法修饰符 返回值类型 方法名(参数列表)throws 异常类列表 方法体 public class Date int year,month,day;void setDate(int y,int m,int d)/成员方法 year=y;month=m;day=d;12Computer_yuComputer_yuComputer_yuComputer_yu声明main方法public static void main(String args)是程序执行的入口
5、只有拥有该方法的类才可以被JVM执行。13演示示例3.1Computer_yuComputer_yuComputer_yuComputer_yu使用对象声明对象实例化对象l对象=new 构造方法(参数)lDate1 aday=new Date1();使用对象的成员l对象.成员变量l对象.成员方法(参数)aday.year=2006;/引用对象的成员变量aday.setDate(2006,1,28);/调用对象的方法abcd.equals(abc)14Computer_yuComputer_yuComputer_yuComputer_yu对象的引用模型15Computer_yuComputer_
6、yuComputer_yuComputer_yu对象的引用模型16方法调用时的参数传递原则l基本数据类型参数传递值;l引用数据类型参数传递引用。释放对象Java语言具有资源回收机制,能够跟踪存储单元的使用情况,自动收回不再被使用的资源。【例3.2】引用数据类型作为方法的参数和返回值。演示示例3.2Computer_yuComputer_yuComputer_yuComputer_yu3.2 类的封装性将数据和对数据的操作组合起来构成类类既要提供和外部联系的方法,又要尽量隐藏类的实现细节。17Computer_yuComputer_yuComputer_yuComputer_yu内容:183.2
7、.1 构造方法与析构方法3.2.2 方法的重载3.2.3 this引用和instanceof对象运算符3.2.4 类及其成员的访问权限3.2.5 实例成员与类成员Computer_yuComputer_yuComputer_yuComputer_yupublic class Date2 public Date2(int y,int m,int d)/声明构造方法 /构造方法与类同名,构造方法返回该类的一个实例 year=y;month=m;day=d;19Computer_yuComputer_yuComputer_yuComputer_yu构造方法特殊的成员方法用于创建类的实例并初始化该实例
8、对象声明构造方法l与类名相同l不需要写返回值类型说明l不声明,则有默认无参的构造方法l声明了带参的,则不会自动生成默认无参的l只能通过new来使用20Computer_yuComputer_yuComputer_yuComputer_yupublic void finalize()/析构方法 语句序列;21Computer_yuComputer_yuComputer_yuComputer_yu析构方法用于释放类的实例并执行特定操作finalize无参无返回值不可重载可以使用 对象名.finalize()来调用一般不需要定义22Computer_yuComputer_yuComputer_yuC
9、omputer_yuMath.abs()方法声明有4种:lint abs(int a)llong abs(long a)lfloat abs(float a)ldouble abs(double a)23Computer_yuComputer_yuComputer_yuComputer_yu方法重载方法名相同但是参数列表不同构造函数也可以重载lDate2 aday1=new Date2();lDate2 aday2=new Date2(2006,2,28);l拷贝构造方法l使用已经存在的对象创建新对象,实现对象的复制24Computer_yuComputer_yuComputer_yuComp
10、uter_yu25Date2 aday3=new Date2(aday2);/由已知对象创建新对象 Computer_yuComputer_yuComputer_yuComputer_yuthis引用指代对象本身访问本类的成员this.成员变量this.成员方法(参数列表)避免同名的冲突调用本来重载的构造方法this(参数)必须是第一句26Computer_yuComputer_yuComputer_yuComputer_yuinstanceof运算符判断一个对象是否是指定的类,返回boolean类型Date d=new Date(2007,9,12);date instanceof Date
11、27Computer_yuComputer_yuComputer_yuComputer_yu类中成员的访问权限28权限修饰符同一类同一包不同包的子类所有类public(公有)protected(保护)缺省private(私有)Computer_yuComputer_yuComputer_yuComputer_yu类的访问权限类的访问权限:只有public和缺省两种。public class Date1 /公有的类class Date1_ex /默认的类29Computer_yuComputer_yuComputer_yuComputer_yu例3.3 日期类的封装30设计并重载构造方法 成员变
12、量设计为私有的访问权限,限制其他类对成员变量的访问成员方法设计为公有的访问权限,提供给其他类使用使用this引用增强程序的可维护性运行包含main()方法的类日期类的设计问题讨论演示示例3.3Computer_yuComputer_yuComputer_yuComputer_yu实例成员与类成员实例成员变量与类成员变量l两者声明时的差别public class Person1 String name;/姓名,实例成员变量 int age;/年龄 static int count;/人数,类成员变量l两者存储结构的差别l两者引用方式的差别31Computer_yuComputer_yuCompu
13、ter_yuComputer_yu实例成员变量与类成员变量的存储结构不同32Computer_yuComputer_yuComputer_yuComputer_yu实例成员方法与类成员方法33两者声明时的差别public static int howMany()/类成员方法 return count;/类成员方法只能访问类成员变量public static void main(String args)/main方法也是类成员方法两者方法体中语句的差别l在类成员方法体中,不能使用this引用。两者调用方式的差别lPerson1.howMany();/通过类名调用类成员方法lp1.howMany();/通过对象调用类成员方法Computer_yuComputer_yuComputer_yuComputer_yu【例3.4】实例成员与类成员34类成员的作用和调用set方法可以重载,get方法不能重载方法体中的局部变量不能使用修饰符调用对象的析构方法后,不能再引用对象演示示例3.4