类的封装、继承和多态ppt课件.ppt
《类的封装、继承和多态ppt课件.ppt》由会员分享,可在线阅读,更多相关《类的封装、继承和多态ppt课件.ppt(55页珍藏版)》请在三一办公上搜索。
1、Java程序设计实用教程(第3版),第3章 类的封装、继承和多态,3.1 类和对象3.2 类的封装性3.3 类的继承性3.4 类的多态性3.5 类的抽象性,Java程序设计实用教程(第3版),3.1 类和对象,类(class):是既包括数据又包括作用于数据的一组操作的封装体。 对象(object):是类的实例(instance)。 类具有封装性、继承性、多态性和抽象性。3.1.1 类3.1.2 对象,Java程序设计实用教程(第3版),3.1.1 类,声明类类声明 成员变量的声明; 成员方法的声明及实现;修饰符 class 类 extends 父类 implements 接口列表,类结构,Ja
2、va程序设计实用教程(第3版),3.1.1 类,声明成员变量和成员方法声明成员变量格式: 修饰符 数据类型 变量=表达式 ,变量=表达式;声明成员方法格式: 修饰符 返回值类型 方法(参数列表) throws 异常类 语句序列; return 返回值; ,Java程序设计实用教程(第3版),3.1.1 类,ublic class MyDate /类声明 int year,month,day; /成员变量 void set(int y,int m,int d) /成员方法 year=y; /设置日期值 month=m; day=d; ,例3.1 声明日期类,Java程序设计实用教程(第3版),3
3、.1.1 类,3.成员方法重载 void set(int y,int m,int d) /重载方法,参数个数不同 void set(int m,int d) void set(int d) void set(MyDate d) /重载方法,参数数据类型不同以下方法是错误的:void set(int y,int m,int d)void set(int m,int d,int y),Java程序设计实用教程(第3版),3.1.2 对象,一个对象的生命周期是: 创建运行消亡。 声明对象 类 对象 MyDate d; 创建实例 对象 = new 类的构造方法(参数列表) d=new MyDate()
4、;或 MyDate d=new MyDate();,Java程序设计实用教程(第3版),3.1.2 对象,3. 引用对象的成员变量和调用对象方法引用成员变量 对象.成员变量 如: d.year=2008;调用成员方法 对象.成员方法(参数列表) 如: d.set(2009,7,28);Java语言回收机制自动释放对象。 【例3.1】声明日期类及使用日期对象。,ublic class MyDate /类声明 int year,month,day; /成员变量,表示年、月、日 void set(int y,int m,int d) /成员方法,设置日期值 /无返回值,有3个参数 year = y;
5、 month = m; day = d; void set(MyDate d) /将当前对象值设置为参数值,重载 set(d.year,d.month,d.day); /调用重载的同名成员方法 public String toString() /返回中文日期字符串 return year+”年”+month+”月”+day+”日”; public boolean equals(MyDate d) /比较当前日期值与d是否相等 return this=d|d!=null /this指代调用本方法的当前对象,3.1.2 对象,ublic static void main(String args)
6、MyDate d1 = new MyDate() ; /声明对象,创建实例,引用赋值 d1.set(2009,7,16); /调用类的成员方法 MyDate d2 = d1; /对象引用赋值 System.out.println(“d1:”+d1.toString()+“d2:”+d2.toString()+ ” d1=d2?”+(d1=d2); d2.year=2008; /修改实例成员变量值 System.out.println(“d1:”+d1+“d2:”+d2+” d1=d2?”+ (d1=d2)+”,d1.equals(d2)?”+(d1.equals(d2); /将对象转换为字符串
7、,默认调用 d1.toString(); d2=new MyDate(); /创建另一个实例 d2.set(d1); System.out.println(“d1:”+d1+“d2:”+d2+” d1=d2?”+ (d1=d2)+”,d1.equals(d2)?”+(d1.equals(d2); ,3.1.2 对象,4. 对象的引用模型,3.1.2 对象,Java程序设计实用教程(第3版),5. 对象的关系运算与比较相等,3.1.2 对象,Java程序设计实用教程(第3版),3.2 类的封装性,3.2.1 构造方法3.2.2 this引用和instanceof对象运算符3.2.3 访问控制 3
8、.2.4 静态成员3.2.5 析构方法3.2.6 浅拷贝与深拷贝,Java程序设计实用教程(第3版),3.2 类的封装性,封装(encapsulation)的含义是:类的设计者把类设计成一个黑匣子,使用者只能看见类中定义的公共方法,而看不见方法的实现细节,也不能直接对类中的数据进行操作。封装的目的有:隐藏类的实现细节;迫使用户通过接口去访问数据;增强代码的可维护性。 封装的措施有:构造方法、析构方法、方法重载、设置访问控制权限。,Java程序设计实用教程(第3版),3.2.1 构造方法,声明及调用构造方法public class MyDate int year,month,day; publi
9、c MyDate(int y, int m, int d) /声明构造方法 /构造方法与类同名,构造方法返回该类的一个实例 year = y; month = m; day = d; MyDate d = new MyDate(2009,7,18); /对MyDate d = new MyDate( ); /错,Java程序设计实用教程(第3版),3.2.1 构造方法,2. 默认构造方法 public MyDate() /没有声明任何构造方法时系统提供使用默认构造方法实例化对象时进行初始化约定:整数0、浮点数0.0、字符u0000、布尔false、引用数据类型nullpublic class
10、MyDate int year,month,day; public MyDate( ) /声明构造方法 /构造方法与类同名,构造方法返回该类的一个实例 year = 1970; month = 1; day = 1; ,Java程序设计实用教程(第3版),3.拷贝构造方法,ublic MyDate(MyDate d) year = d.year; month = d.month; day = d.day;调用语句如下: MyDate d1 = new MyDate(2009,7,16); MyDate d2 = new MyDate(d1); 第2句功能相当于以下两句:MyDate d2 =
11、new MyDate(); d2.set(d1);,3.2.1 构造方法,Java程序设计实用教程(第3版),4. 构造方法重载,public MyDate(int y, int m, int d)public MyDate(int y, int m)public MyDate(int y)public MyDate()public MyDate(MyDate d),3.2.1 构造方法,Java程序设计实用教程(第3版),3.2.2 this引用和instanceof对象运算符,this引用指代对象本身this访问本类的成员变量和成员方法this.成员变量this.成员方法(参数列表)调用本
12、类重载的构造方法this(参数列表)instanceof对象运算符MyDate d=new MyDate(); d instanceof MyDate,3.2.3 访问控制,类的访问权限:只有public和缺省两种 。 public class MyDate class MyDate_ex类中成员的访问权限声明set()和get()方法存取对象的属性,Java程序设计实用教程(第3版),3.2.4 静态成员,ublic class MyDate private int year,month,day; /实例成员变量 private static int thisYear; /静态成员变量 st
13、atic /静态成员变量初始化 thisYear=2009; public static int getThisYear() /静态成员方法 return thisYear; /访问静态成员变量 ,Java程序设计实用教程(第3版),静态成员变量的初始化:static /静态初始化块 静态成员变量的初始化;【例3.2】封装的日期类。,图3.3 实例成员变量与静态成员变量的存储结构不同,3.2.4 静态成员,Java程序设计实用教程(第3版),3.2.5 析构方法,ublic void finalize() /析构方法 语句序列;作用是:释放实例,并执行特定的操作。如:a. finalize()
14、 ;,Java程序设计实用教程(第3版),3.2.6 浅拷贝与深拷贝,1. 浅拷贝,public class Person String name; Mydate birthday; public Person(String name,Mydate birthday) this.name=name; this.birthday=birthday; public Person(Person p) this(p.name, p.birthday); ,3.2.6 浅拷贝与深拷贝,2. 深拷贝 有如下的类定义:,Person p1=new Person(“李小明”,new Mydate(1979,3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 封装 继承 ppt 课件

链接地址:https://www.31ppt.com/p-1359623.html