《面向对象特性》PPT课件.ppt
《《面向对象特性》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《面向对象特性》PPT课件.ppt(91页珍藏版)》请在三一办公上搜索。
1、Java面向对象特性,目标,熟悉类的概念,以及用对象对类进行实例化的概念。学会如何在Java中定义类。学会在Java中定义并使用方法(对象的动作)。学会在Java中创建对象。学习信息隐藏与封装的相关知识。了解面向对象的程序设计。,抽象数据类型,绝大多数程序设计语言都预定义了一些基本数据类型,并相应定义了对那些类型的实例执行的操作。,概述,比如,对整型、实型等数值类型,有加、减、乘、除等操作,对逻辑类型,有逻辑与、逻辑或、逻辑非等操作。对于用户自定义的复合数据类型,需要由程序员自己定义一些方法,对该类型的实例进行所需的操作。,抽象数据类型,对象是一种程序构造,有与之相关的数据(信息),并可以执行
2、某些动作。程序运行时,对象之间会进行交互,以实现程序设计需要完成的任务。可以用对象来表示现实世界中的各种对象,比如汽车、房屋、雇员记录。类是指一种或一类对象,同一个类的所有对象都具有相同类型的数据和行为。类和对象是Java程序的基本组成要素。,类,类是现实世界某些对象的共同特征(属性和操作)的表示,对象是类的实例。类的属性:就是类的静态属性的简称,指类内包含的各项数据,如变量或其他类的对象;类的服务:则被称为成员函数或方法。,类的基本定义,修饰符 class 类名 extends 父类 implements 接口名 类成员变量声明 类方法声明,关于类头-class,class关键字,在它的后面
3、,应跟随新数据类型的名称。(注意不要把class写成Class)。父类名跟在extends 关键字后面,用来说明当前类是哪个已经存在类的子类,存在继承关系。继承是类与类之间的一种非常重要的关系。,关于类头-类的修饰符,“public”(公共)意味着后续的定义任何人均可使用。“private”(私有)意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。“protected”(受保护的)与“private”相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。“friendly”(友好的)若某样东西是“友好的”,意味着它只能在这个包装的范围内使用(所
4、以这一访问级别有时也叫作“包装访问”)。“,关于类头-接口名,接口名跟在implements关键字后面,用来说明当前类中实现了哪个接口定义的功能和方法。接口是Java语言用来实现多重继承的一种特殊机制,我们将在后面详细介绍它的使用方法。,关于类体,类体的定义要包括类的具体内容,包括类的属性与方法。,class,关于类体-类的属性,Java中声明类属性为简单变量的语法如下:修饰符 变量类型 变量名=变量初值;,变量类型和变量名是声明一个变量必不可少的部分;变量的类型是简单数据类型,如int、double等。,Java中声明方法的语法如下:修饰符 返回值类型 方法名(参数列表)throws 例外名
5、1,例外名2,方法体:局部变量声明;语句序列;,关于类体-类的方法,类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。,关于类体-类的方法,Java语言中定义的方法有两类:一类是需要程序书写专门的调用命令来调用的方法,称为程序调用方法,例如isPfime();另一类是运行过程中系统自动调用的方法,称为系统方法,例如我们前面程序中的action()、paint()、init()等。这两类方法的定义和使用原则有很大差异。,注意:系统调用方法的最大特点:不需要在程序里书写专门的调用方法的命令,用户程序自定义类,Java程序员把注意力放在
6、创建称为类的用户自定义类型(user-defined type)上,类也称为程序员定义的类型(programmer-defined type),每个类都含有数据和一组操作数据的方法,类中的数据部分称为实例变量。用户定义类型(即类)的实例称为对象。,下面是一个简单化的Date类。,示例,public class Date private int day,month,year;Date(int i,int j,int k)day=i;month=j;year=k;Date()day=1;month=1;year=1998;Date(Date d)day=d.day;month=d.month;ye
7、ar=d.year;,public Date tomorrow()Date d=new Date(this);d.day+;if(d.dayd.daysInMonth()d.day=1;d.month+;if(d.month 12)d.month=1;d.year+;return d;,daysInMonth()返回每个月中不同的天数,抽象数据类型,在Java中把名为tomorrow的代码段叫做方法,也可以称为成员函数。Java在数据和操作间建立了较严格的联系,即把方法与数据封装在一个类中。,抽象数据类型,Data d=new Date(20,11,1998);/已初始化的date对象d.to
8、morrow();/tomorrow()方法作用于变量d要访问Date类的域,可使用点操作符“.”:d.day/d所指的Date对象中的day域,定义方法,在Java中,方法定义的一般格式如下:()是方法名,它必须使用合法的标识符。说明方法返回值的类型。如果方法不返回任何值,它应该声明为void。Java对待返回值的要求很严格,方法返回值必须与所说明的类型相匹配。,定义方法,段可以含几个不同的修饰符。是传送给方法的参数表。表中各元素间以逗号分隔,每个元素由一个类型和一个标识符组成。表示方法体,是要实际执行的代码段。,示例1,void setName(String name)this.name=
9、name;String getAddress()return address;,按值传送,Java只“按值”传送自变量,即方法调用不会改变自变量的值。当对象实例作为自变量传送给方法时,自变量的值是对对象的引用,也就是说,传送给方法的是引用值。在方法内,这个引用值是不会被改变的,但可以修改该引用指向的对象内容。当从方法中退出时,所修改的对象内容可以保留下来。,程序3,public class PassTest float ptValue;public static void main(String args)String str;int val;PassTest pt=new PassTest(
10、);val=11;/给整型量val赋值 pt.changeInt(val);/改变val的值,创建类的实例,/val当前的值是什么呢?打印出来看看System.out.println(Int value is:+val);/给字符串str赋值str=new String(hello);/改变str的值pt.changeStr(str);/str当前的值是什么呢?打印出来看看System.out.println(Str value is:+str);/现在给ptValue赋值pt.ptValue=101f;/现在通过对象引用改值pt.changeObjValue(pt);,/当前的值是什么呢?S
11、ystem.out.println(Current ptValue is:+pt.ptValue);/修改当前值的方法public void changeInt(int value)value=55;public void changeStr(String value)value=new String(different);public void changeObjValue(PassTest ref)ref.ptValue=99f;,this引用,在Java中,如果在类的成员方法中访问类的成员变量,可以使用关键字this指明要操作的对象。,示例,public class Date priva
12、te int day,month,year;public void printDate()System.out.println(The current date is(dd/mm/yy):+this.day+/+this.month+/+this.year);,示例,public class Date private int day,month,year;public void printDate()System.out.println(The current date is(dd/mm/yy):+day+/+month+/+year);,数据隐藏,在Date类中说明day、month和yea
13、r是private的,这意味着只能在Date类中的方法内访问这些成员,而在类外的方法中不能访问它们。,例5-4:,public class DateUser public static void main(String args)Date mydate=new Date();mydate.day=21;,错误!,示例,Date d=new Date();d.day=32;/语法正确但语义错误d.month=2;d.day=30;/没有进行月份的循环检查 d.month=d.month+1;上述赋值语句的结果使得日期对象中的域值成为非法的,或称为不一致的。,说明,如果类的数据成员没有明确地提供给
14、使用者访问,就是说它不是公有的,则类的使用者必须通过方法来访问成员变量。,示例,public void setDay(int targetDay)if(targetDay this.daysInMonth()System.err.println(invalid day+targetDay);else this.day=targetDay;,封装,如果对数据的访问是完全放开的,那么,程序会变得混乱且不易控制。对于其他复杂的数据类型,类的使用者可能会疏忽对数据的一致性检查。,封装,封装是面向对象方法的一个重要原则。它有两个基本涵义:一是指对象的全部属性数据和对数据的全部操作结合在一起,形成一个统一
15、体,也就是对象;另一方面是指,尽可能地隐藏对象的内部细节,只保留有限的对外接口,对数据的操作都通过这些接口实现。,重载方法名,如果需要在同一类中写多个方法,让它们对不同的变量进行同样的操作,就需要重载方法名。在Java和其他几种面向对象的程序设计语言中,允许对多个方法使用同一个方法名,这就是方法名的重载。当然,前提条件是能够区分实际调用的是哪个方法,才可用这种方式。,重载方法名,Java根据参数自变量的类型及参数的个数来区分这些方法。例如:public void print(int i)public void print(float f)public void print(String s)当
16、调用print方法时,可根据自变量的类型选中相应的一个方法。,重载方法规则一,调用语句的自变量列表必须足够判明要调用的是哪个方法。自变量的类型可能要进行正常的扩展提升(如浮点变为双精度),但在有些情况下这会引起混淆。,重载方法规则二,方法的返回类型可能不同。如果两个同名方法只有返回类型不同,而自变量列表完全相同则是不够的,因为在方法执行前不知道能得到什么类型的返回值,因此也就不能确定要调用的是哪个方法。重载方法的参数表必须不同,即参数个数或参数类型不同。,对象的构造和初始化,在说明了引用后,要调用new为新对象分配空间。在调用new时,既可以带有变量,也可以不带变量。系统根据所带参数的个数和类
17、型,调用相应的构造方法。,对象的构造和初始化,调用构造方法时,步骤如下:(1)分配新对象的空间,并进行默认的初始化。在Java中,这个过程是不可分的,从而可确保不会有没有初值的对象。(2)执行显式的成员初始化。(3)执行构造方法,构造方法是一个特殊的方法。,显式成员初始化,在成员说明中写有简单的赋值表达式,就可以在构造对象时进行显式的成员初始化。,示例,public class Initialized private int x=5;private String name=Fred;private Date created=new Date();/成员的访问方法.,构造方法,显式初始化是为对象
18、域设定初值的一种简单方法。因为设定的初值不具有变化性,所以这种简单的方法有其局限性。系统定义了构造方法,同时允许程序员编写自己的构造方法完成不同的操作。,构造方法,构造方法是特殊的类方法,有着特殊的功能。它的名字与类名相同,没有返回值,在创建对象实例时由new运算符自动调用。为了创建实例的方便,一个类可以有多个具有不同参数列表的构造方法,即构造方法可以重载。,示例,public class Xyz/成员变量int x;public Xyz()x=0;public Xyz(int i)x=i;,使用参数创建对象,创建对象,构造方法,因为构造方法的特殊性,它不允许程序员按通常调用方法的方式来调用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象特性 面向 对象 特性 PPT 课件
链接地址:https://www.31ppt.com/p-5619404.html