类的封装、继承和多态.ppt
《类的封装、继承和多态.ppt》由会员分享,可在线阅读,更多相关《类的封装、继承和多态.ppt(61页珍藏版)》请在三一办公上搜索。
1、类的封装、继承和多态,金陵科技学院刘晶2011.3,3,面向对象编程,2,复 习,基本语法规则数据类型运算符与表达式流程控制语句分支语句循环语句Java的数组和字符串,面向对象编程,3,主要内容,OOP的概念类和对象OOP的特点类的封装性类的继承性类的多态性类的抽象性,面向对象编程,4,OOP概念,公共数据,算法数据结构,对象消息,面向对象编程,5,OOP的主要特点,封装性(encapsulation)即实现了信息的隐藏提高了程序的模块化及安全性,且易于维护继承性(inheritance),交通工具,Java仅支持单重继承,面向对象编程,6,OOP的主要特点(续),继承性(续)体现了对现实世界
2、的抽象模拟提高了代码的复用性,增强了软件的扩充性多态性(polymorphism)用同一个名字调用实现不同操作的方法方式1:不同的类之间的同名方法如:中国人/日本人/美国人 说话方式2:参数不同的同名方法(如加法)使用灵活方便,且降低了维护和编程量,面向对象编程,7,JAVA中的OOP,几个概念类:既包括数据又包括作用于数据的一组操作的封装体系统类库中已定义好的类用户自定义的类对象(实例instance):类的实例创建某个类的具体对象(类似变量声明)类名欲创建的对象名 new 类名(参数表);例如:String s=new String(“Hello!”);,面向对象编程,8,JAVA中的OO
3、P(续),Java中的类结构基类:所有JAVA的类都派生自ObjectJava的类可组织在包(package)中Java提供的标准类库分布在一系列的包中,如java.lang,java.util,等编程的过程就是继承基类或标准类而创建、定义特殊子类的过程,public class Object public Object()/构造方法 public String toString()/描述对象 public boolean equals(Object obj)/比较对象相等 protected void finalize()throws Throwable,面向对象编程,9,类的封装性,类说明
4、语法:类修饰符 class 类名 extends 超类名 implements 接口名 成员变量定义;成员方法定义;,类体,面向对象编程,10,类的封装性,类修饰符(Modifier):public:允许其他类(没有限制)访问本类,一个源文件仅可以有一个public类缺省:可被当前包中的其他类访问abstract:没有实例的抽象概念类,必需派生子类final:不能再被扩展,不包含子类的类;易于安全性的实现,或用于创建固定功能的类父类继承声明:extends 父类名实现接口(interface):implements 接口名,面向对象编程,11,类的封装性,例:public abstract c
5、lass shapeclass rectangle extends shapefinal class roundrect extends rectangle.?final可以与abstract一起使用吗?,面向对象编程,12,类的封装性,声明成员变量member的语法:修饰符 数据类型 变量名;引用:对象名.变量修饰符访问控制符public:可被所有其他类引用protected:可被本包中的类及子类引用,面向对象编程,13,类的封装性,缺省:可被本包中的类引用private protected:可被该类自身、子类引用private:仅可被该类自身引用和修改,不能被其他任何类(包括子类)引用st
6、atic:类成员变量,对所有的实例一致,引用时前缀可使用类名或对象名final:数值不变常量,定义同时应对其进行初始化,面向对象编程,14,类的封装性,例:class shapeprivate protected int x;private static int y;static final float MAX_AREA=100.0f;.,面向对象编程,15,类的封装性,方法的声明语法:修饰符 返回类型 方法名(参数列表)throws 异常名 方法体;定义对类内成员变量(数据)的操作谁可以调用方法、接受哪些参数、如何返回信息,面向对象编程,16,类的封装性,修饰符(Modifier):访问控制
7、符:public、private、protected、private protectedstatic:静态方法,又称类方法使用类名或对象名作为前缀,建议使用类名在static方法体中只能直接使用static变量和static方法不可被覆盖(重写)abstract:只有声明没有语句,要在子类中通过重新定义(override)来实现final:不可被覆盖(重写)(override),面向对象编程,17,类的封装性,返回类型:void、return参数列表:值传递 PassTest.javathrows:通告本方法中会产生的例外(异常)类型,提醒调用者要对相应的可能例外进行处理。当执行此方法并发生了
8、例外时,程序会转入调用者编制的例外处理程序段。,面向对象编程,18,类及其成员的访问权限,类中成员的访问权限类的访问权限:只有public和缺省两种。public class Date1/公有的类class Date1_ex/默认的类声明公有的set()和get()方法存取对象的属性,面向对象编程,19,对象,创建对象过程声明对象:为引用类型变量分配引用空间创建实例(对象实例化):为实例分配存储空间,并对实例属性初始化默认初始化显示初始化(可省)执行构造方法初始化为对象赋值(必为地址值)对象的使用:用点操作符访问对象中的成员【例3.1】声明日期类及使用日期对象。,面向对象编程,20,对象的引用
9、模型,面向对象编程,21,对象的关系运算与比较相等,面向对象编程,22,构造方法(constructor),问题的提出Java试图在每个对象一诞生时,就给它一确定的状态,但有时这种系统的缺省初值(系统定义构造方法赋值)不合适;所以在创建一个新对象时,需用自定义构造方法完成合法的初始化,使类内成员的初始化工作不依赖于外界完成。体现了面向对象的autonomy原则。,面向对象编程,23,构造方法(续),构造方法与类同名构造方法没有返回值(无需void说明)构造方法不能被继承构造方法只能在创建类对象时由系统隐含调用(new 构造方法),而不能直接调用当创建类对象时,自动执行类的构造方法,初始化新对象
10、的成员变量,面向对象编程,24,构造方法(续),一个类中可创建多个构造方法(重载)当类中声明了用户自定义的构造方时,则覆盖不带参数的默认构造方法例:BankTester.java,面向对象编程,25,一个小问题?,BankAccount r1=new BankAccount();BankAccount r2=r1;这时,内存中为BankAccount类创建了几个实例呢?这个实例有几个引用(reference)呢?BankAccount r2=new BankAccount(r1);这时又有几个BankAccount类的实例和引用呢?,面向对象编程,26,拷贝构造方法,使用拷贝构造方法复制实例浅
11、拷贝:对象成员变量都为基本数据类型深拷贝:对象成员变量为引用数据类型,面向对象编程,27,析构方法,Public void finalize()在一个对象占用的内存空间被返还给系统存储堆之前自动执行也可对象调用执行:d.finalize();Java的垃圾回收机制:每个对象有自己的REFERENCE计数器,计数器减为零时对象丢失,系统在其后某个时刻自动回收不再可用的对象,调用析构方法,面向对象编程,28,this引用,指代对象本身this访问本类的成员变量和成员方法this.成员变量this.成员方法(参数列表)调用本类重载的构造方法this(参数列表),面向对象编程,29,this引用,例子
12、:class Point int x,y;Point(int x,int y)this.x=x;this.y=y;/this指代本类对象 Point()this(0,0);/this调用本类带两个整形参数的构造方法 public Point getPoint()Point p=this;/this指代调用本方法的当前对象 return p;,面向对象编程,30,实例成员变量与静态成员变量,实例成员变量与静态成员变量两者声明时的差别public class Person1 String name;/姓名,实例成员变量 int age;/年龄 static int count;/人数,类成员变量两
13、者存储结构的差别两者引用方式的差别,面向对象编程,31,实例成员变量与静态成员变量,两者存储结构的差别,面向对象编程,32,实例成员变量与静态成员变量,两者引用方式的差别类名.静态成员变量名如:Person1.count=1;注:不能使用this引用对象名.实例成员变量名如:Person1 p1=new Person1();p1.age=20;,面向对象编程,33,实例成员变量与静态成员变量,Java语言在创建对象时不为静态成员变量分配空间,只为实例成员变量分配空间静态成员变量不依赖某一个具体的对象,即使没有创建一个它所属类的对象,它也是存在的,只要该类的代码装入,则该类成员变量就是存在的,就
14、可以使用,面向对象编程,34,实例成员方法与静态成员方法,两者声明时的差别public static int howMany()/静态成员方法 return count;/静态成员方法只能直接访问静态成员变量public static void main(String args)/main方法也是静态成员方法,面向对象编程,35,实例成员方法与静态成员方法,两者引用方式的差别静态成员方法与静态成员变量类似,不依赖于具体的对象,在调用时直接通过类名来调用:类名.类方法名(方法的参数表),面向对象编程,36,实例成员方法与静态成员方法,两者方法体中语句的差别静态成员方法的方法体中不能使用this,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 封装 继承
链接地址:https://www.31ppt.com/p-6597373.html