面向对象的核心特性_第1页
面向对象的核心特性_第2页
面向对象的核心特性_第3页
面向对象的核心特性_第4页
面向对象的核心特性_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象的核心特性《Java2程序设计实用教程(第2版)》第1页,共39页,2023年,2月20日,星期四3.1类和对象3.1.1面向对象基本概念3.1.2定义类3.1.3使用对象第2页,共39页,2023年,2月20日,星期四3.1.1面向对象基本概念类与对象类(class)是既包括数据又包括作用于数据的一组操作的封装体。对象(object)是类的实例(instance)。类的封装性、继承性和多态性类的封装性类的继承性类的多态性第3页,共39页,2023年,2月20日,星期四3.1.2定义类声明类类声明{

成员变量的声明;

成员方法的声明及实现;}声明成员变量[修饰符]class类<泛型>[extends父类][implements接口列表]publicclassDate1 //类声明{intyear,month,day; //声明成员变量}第4页,共39页,2023年,2月20日,星期四3.1.2定义类声明成员方法方法声明语法[修饰符]返回值类型方法([参数列表])[throws异常类]{

语句序列;[return[返回值]];}方法体中的局部变量方法体中用return语句返回值声明main方法publicstaticvoidmain(Stringargs[])【例3.1】声明日期类。第5页,共39页,2023年,2月20日,星期四3.1.3使用对象声明对象类对象对象实例化对象=new类的构造方法([参数列表])Date1aday=newDate1();引用对象的成员变量和调用对象方法对象.成员变量对象.成员方法([参数列表])aday.year=2006; //引用对象的成员变量aday.setDate(2006,1,28);//调用对象的方法"abcd".equals("abc")第6页,共39页,2023年,2月20日,星期四3.1.3使用对象对象的引用模型第7页,共39页,2023年,2月20日,星期四3.1.3使用对象方法调用时的参数传递原则基本数据类型参数传递值;引用数据类型参数传递引用。释放对象Java语言具有资源回收机制,能够跟踪存储单元的使用情况,自动收回不再被使用的资源。【例3.2】引用数据类型作为方法的参数和返回值。第8页,共39页,2023年,2月20日,星期四3.2类的封装性3.2.1构造方法与析构方法3.2.2方法的重载3.2.3this引用和instanceof对象运算符3.2.4类及其成员的访问权限3.2.5实例成员与类成员第9页,共39页,2023年,2月20日,星期四3.2.1构造方法与析构方法构造方法声明构造方法publicclassDate2{publicDate2(inty,intm,intd) //声明构造方法

{//构造方法与类同名,构造方法返回该类的一个实例

year=y;month=m;day=d;}}Date2aday=newDate2(2006,1,28);关于构造方法声明和使用的几点说明构造方法与成员方法的不同之处第10页,共39页,2023年,2月20日,星期四2.析构方法publicvoidfinalize() //析构方法{

语句序列;}第11页,共39页,2023年,2月20日,星期四3.2.2方法的重载重载的含义Math.abs()方法声明有4种:intabs(inta)longabs(longa)floatabs(floata)doubleabs(doublea)成员方法重载构造方法重载Date2aday1=newDate2();Date2aday2=newDate2(2006,2,28);第12页,共39页,2023年,2月20日,星期四图3.2使用拷贝构造方法复制对象Date2aday3=newDate2(aday2); //由已知对象创建新对象第13页,共39页,2023年,2月20日,星期四3.2.3this引用和instanceof对象运算符this引用指代对象本身this访问本类的成员变量和成员方法this.成员变量this.成员方法([参数列表])调用本类重载的构造方法this([参数列表])instanceof对象运算符adayinstanceofDate2第14页,共39页,2023年,2月20日,星期四3.2.4类及其成员的访问权限类中成员的访问权限类的访问权限:只有public和缺省两种。publicclassDate1 //公有的类classDate1_ex //默认的类权限修饰符同一类同一包不同包的子类所有类public(公有)protected(保护)缺省private(私有)第15页,共39页,2023年,2月20日,星期四【例3.3】日期类的封装。设计并重载构造方法成员变量设计为私有的访问权限,限制其他类对成员变量的访问成员方法设计为公有的访问权限,提供给其他类使用使用this引用增强程序的可维护性运行包含main()方法的类日期类的设计问题讨论第16页,共39页,2023年,2月20日,星期四3.2.5实例成员与类成员实例成员变量与类成员变量两者声明时的差别publicclassPerson1{Stringname; //姓名,实例成员变量

intage; //年龄

staticintcount; //人数,类成员变量}两者存储结构的差别两者引用方式的差别第17页,共39页,2023年,2月20日,星期四图3.4实例成员变量与类成员变量的存储结构不同第18页,共39页,2023年,2月20日,星期四2.实例成员方法与类成员方法两者声明时的差别publicstaticinthowMany() //类成员方法{returncount;//类成员方法只能访问类成员变量}publicstaticvoidmain(Stringargs[])//main方法也是类成员方法两者方法体中语句的差别在类成员方法体中,不能使用this引用。两者调用方式的差别Person1.howMany(); //通过类名调用类成员方法p1.howMany();//通过对象调用类成员方法第19页,共39页,2023年,2月20日,星期四【例3.4】实例成员与类成员。类成员的作用和调用set方法可以重载,get方法不能重载方法体中的局部变量不能使用修饰符调用对象的析构方法后,不能再引用对象第20页,共39页,2023年,2月20日,星期四3.3类的继承性3.3.1什么是继承3.3.2定义继承的类3.3.3super引用第21页,共39页,2023年,2月20日,星期四3.3.1什么是继承继承的概念由一个已有的类定义一个新类,称为新类继承已有的类。继承的作用继承原则子类继承父类的成员变量,包括实例成员变量和类成员变量。子类继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法。子类不能继承父类的构造方法。因为父类构造方法创建的是父类对象,子类必须声明自己的构造方法,创建子类自己的对象。子类能够继承父类的析构方法。子类不能删除父类成员。子类可以增加自己的成员变量和成员方法。子类可以重定义父类成员。第22页,共39页,2023年,2月20日,星期四图3.5类的继承性第23页,共39页,2023年,2月20日,星期四3.3.2定义继承的类声明继承的类[修饰符]class类<泛型>[extends父类][implements接口列表]publicclassStudent1extendsPerson1{Stringspeciality; //专业}第24页,共39页,2023年,2月20日,星期四3.3.2定义继承的类Java中的类都是Object的子类publicclassPerson1extendsObject类的赋值相容性子类对象即是父类对象。子类对象对父类成员的访问权限子类对父类的私有成员(private)没有访问权限;子类对父类的公有成员(public)和保护成员(protected)具有访问权限。子类对父类中缺省权限成员的访问分两种情况,对同一包中父类的缺省权限成员具有访问权限,而对不同包中父类的缺省权限成员则没有访问权限。第25页,共39页,2023年,2月20日,星期四3.3.2定义继承的类子类重定义从父类继承来的成员子类隐藏父类成员变量子类覆盖父类成员方法子类继承并重载父类成员方法第26页,共39页,2023年,2月20日,星期四3.3.3super引用调用父类的构造方法super([参数列表])引用父类同名成员子类隐藏父类成员变量super.成员变量子类覆盖父类成员方法super.成员方法([参数列表])第27页,共39页,2023年,2月20日,星期四【例3.5】类的继承性。子类继承父类成员子类对象即是父类对象类之间继承关系的设计原则本例存在问题第28页,共39页,2023年,2月20日,星期四3.4类的多态性3.4.1什么是多态3.4.2运行时多态性第29页,共39页,2023年,2月20日,星期四3.4.1什么是多态方法的重载重载(overload)是指同一个类中的多个方法可以同名但参数列表必须不同。方法的覆盖覆盖(override)是指子类声明并实现父类中的同名方法并且参数列表也完全相同。第30页,共39页,2023年,2月20日,星期四【例3.6】子类重定义父类成员。两个类声明的成员第31页,共39页,2023年,2月20日,星期四【例3.6】子类重定义父类成员。子类隐藏父类成员变量子类覆盖父类成员方法子类继承并重载父类成员方法第32页,共39页,2023年,2月20日,星期四3.4.2运行时多态性编译时多态性Person1p1=newPerson1("李小明",21); //对象获得本类的实例,对象与其获得的实例类型一致Student1s1=newStudent2("王大伟",19);p1.print();//编译时多态性,执行Person1类的方法s1.print();//编译时多态性,执行Student2类覆盖的方法运行时多态性Person1p2=newStudent2(); //p2获得子类对象,对象与其获得的实例类型不一致p2.print(); //运行时多态,执行Student2类覆盖的方法第33页,共39页,2023年,2月20日,星期四【例3.7】运行时多态性的应用。对象数组及计数图3.7对象与对象数组运行时多态性体现System.out.println(pgroup[i].toString());第34页,共39页,2023年,2月20日,星期四3.5抽象类和最终类抽象类声明抽象类与抽象方法publicabstractclassPlaneGraphics1 //平面图形类,抽象类{publicabstractdoublearea(); //计算面积,抽象方法,分号";"必不可少}抽象类不能被实例化抽象类与抽象方法的作用抽象方法必须被子类覆盖第35页,共39页,2023年,2月20日,星期四图3.8图形抽象类及其子类第36页,共39页,2023年,2月20日,星期四【例3.8】

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论