面向对象程序设计基础上精选文档.ppt
《面向对象程序设计基础上精选文档.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计基础上精选文档.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计基础上本讲稿第一页,共七十一页抽象n所有编程语言都提供“抽象”功能。n你所能解决问题的复杂程度取决于抽象的种类和质量。n汇编语言对于计算机(机器语言)是一步很小的抽象。n过程化语言(高级语言)对于汇编语言的抽象迈了一大步。但你所考虑的仍然是机器的结构而非问题的结构。n面向对象方法为程序员提供了一种表示问题空间元素的全新的方法,而且不受问题类型的约束。本讲稿第二页,共七十一页对象n“对象”就象是一台小“计算机”:=对象有状态=对象有你要求它执行的操作n现实世界中的对象:=它们都有自己的状态=它们又都有自己的行为n程序中的对象=用属性表示状态=用方法(代码)实现行为本讲稿第三页,共
2、七十一页封装-信息隐藏n“封装”是一种组织软件的方法。其基本思想是把客观世界中联系紧密的元素及相关操作组织在一起,使其相互关系隐藏在内部,而对外仅仅表现为与其他封装体间的接口。从而构造出具有独立含义的软件实现。n封装并不是一个新的概念,但在面向对象的程序设计中提出了一种全新的封装方法类本讲稿第四页,共七十一页封装-信息隐藏n每个类里都封装了相关的数据和操作。在实际的开发过程中,类多用来构建系统内部的模块,n由于封装特性把类内的数据保护得很严密,模块与模块间仅通过严格控制的数据或操作进行交互,使它们之间耦合和交叉大大减少,从而降低了开发过程的复杂性,提高了效率和质量,减少了可能的错误,同时也保证
3、了程序中数据的完整性和安全性。本讲稿第五页,共七十一页在程序中定义你抽象出的类n新类必须在已有类的基础上构造。n在已有类的基础上构造新类的过程称为派生派生。n派生出的新类称为已有类的子类。已有类称为超类(父类)。n子类继承继承父类的方法和属性。n当没有显式指定父类时,父类隐含为java.lang包中的Object类。父类子类本讲稿第六页,共七十一页类定义属性说明 class Employee String name;int age;float salary;Employee e=new Employee();e.name=“张立”;e.age=21;e.salary=528.37F;Syste
4、m.out.println(e.name +”年龄为:”+e.age +“月薪为:”+e.salary );final 类型 常量名=值常量:只能赋一次值本讲稿第七页,共七十一页类定义方法说明n为Employee类增加打印方法将数据和代码封装在一个单一的实体中。class Employee String name;int age;float salary;void print()System.out.println(name +”年龄为:”+age +“月薪为:”+salary );/class 本讲稿第八页,共七十一页对象方法的含义 Employee emp=new Employee();e
5、mp.name=“张立”;emp.age=21;emp.salary=528.37F;n一旦对象被建立并被初始化,就可以调用该方法打印这个对象的数据。emp.print();n对象emp执行print 方法操作自己的数据;而不是从外部操作对象的数据。n向对象发消息,让对象做某件事。本讲稿第九页,共七十一页对象的几个特征nEverything is an object=原则上说,你可以将所要解决的问题中的任何一个“概念组件”在程序中表示为一个对象。=对象类似一个变量,可以存储数据,但你还可以让它执行某些操作,处理相应的数据。nEvery object has a type=每个对象都是某个类的实
6、例,都有对应的类定义。nA program is a bunch of objects telling each other what to do by sending messages=所谓对一个对象发信息,就是调用该对象的一个方法。=对象+消息是OOP语言的主要编程模式本讲稿第十页,共七十一页数据的隐藏-封装n属性的访问权限=private=public=默认(相当于package)n使用private 修饰属性后,就不能直接通过对象名访问这些它们,而只能通过该对象的公有方法来间接操作这些属性。n将属性私有化,然后通过公有方法处理它们有很多好处:=方法可以保护数据(做各种合法性检查)。=使
7、得代码可维护性好(方法中的代码可变,但方法的调用形式可以不变)1本讲稿第十一页,共七十一页方法的定义规则n方法名后的小括号是方法的标志。n参数列表是该方法的调用环境传递给它的数据。n返回值是方法在操作完成后返还给调用它的环境的数据。n要指定方法返回值类型。如没有返回值,类型要写 voidn方法名相同,但参数不同,是不同的方法。修饰符 返回类型 方法名(参数列表)throws 异常 本讲稿第十二页,共七十一页方法的参数n方法的参数要有名有型,作用域仅在本方法中,在方法体中可以象方法体自己定义的变量一样使用。n参数是值传递!对象的内容可以改变,但对象的引用决不会改变。n方法的参数可以与类中的属性同
8、名,这时,参数在方法体中将隐藏同名的属性。class Circle int x,y radius;void setCircle(int x,int y,int radius)/*/本讲稿第十三页,共七十一页引用类型值传送基本类型值传送地址传送值传送与地址传送3.143.14AB3.14AB0 x2F0 x2FAB本讲稿第十四页,共七十一页参数传递例class PassTest float m_float;void change1(int pi)pi=100;void change2(String ps)ps=new String(“Right”);void change3(PassTest p
9、o)po.m_float=100.0;public static void main(String args)PassTest pt=new PassTest();本讲稿第十五页,共七十一页参数传递例 int i=22;pt.change1(i);System.out.println(“i value is”+i);String s=new String(“Hello”);pr.change2(s);System.out.println(“s value is”+s);pt.m_float=22.0F;pt.change3(pt);System.out.println(“Current pt.
10、m_float is ”+pt.m_float);/main()/class2实参形参copy本讲稿第十六页,共七十一页this关键字class Employee String name;void print()System.out.println(姓名为:+name );class Test public static void main(String args)Employee a=new Employee();a.name=张丽;Employee b=new Employee();b.name=“李峰;a.print();/输出姓名为张丽 b.print();/输出姓名为李峰 /prin
11、t方法如何分辨要输出的name变量值是李峰还是张丽本讲稿第十七页,共七十一页thisn在调用对象的方法时,编译器做了一些内部处理,print在编译时会变成这样的一种形式:void print(Employee this)System.out.println(姓名为+this.name);同时,对print方法的调用会变成这种形式:a.print()=Employee.print(a);b.print();=Employee.print(b);n可以看到,编译器把一个隐含的参数传给了方法指向被操作对象的引用。n如果你在方法中想拿到这个引用 this 本讲稿第十八页,共七十一页thisnthis
12、this 只能在方法中使用,表示调用该方法的当前对象,或类的当前实例。nthisthis可以省略,但有时必须通过this表示该类的对象的一些属性。n例:class Employee String name,int age,float salary;void setEmployee(String name,int age,float salary)this.name=name;/当参数和属性同名时,必须使用this this.age=age;this.salary=salary;本讲稿第十九页,共七十一页this 例/使用this还可完成一种自调用格式的编码class Employee Stri
13、ng name;int age;float salary;Employee setName(String n)name=n;return thisreturn this;Employee setAge(int a)age=a;return this;Employee setSalary(float s)salary=s;return this;class Test public static void main(String args)Employee a=new Employee();a.setName(“赵文).setAge(23).setSalary(2500);本讲稿第二十页,共七十一
14、页Overloding 重载方法名n用同一个名字来表示不同的方法。这些方法同名的原因,是因为它们的最终功能和目的都相同,但由于在完成同一功能时,可能遇到不同的具体情况,所以需要定义含不同的具体内容的方法。n方法名必须相同(是同一类中定义同名方法的情况)。n方法的参数必须不同(同名不同方法是靠不同形式的参数列表来区分,包括形式参数的个数、类型、顺序的不同)。n返回类型可以不同。n利用“重名”现象提高程序的抽象度和简洁性。本讲稿第二十一页,共七十一页系统方法的重载示例nSystem.out.println输出语句中的println方法有多种定义:public void println(int i)
15、public void println(float f)public void println(String s)public void println(Object o)nInteger类:String toString()static String toString(int i)static String toString(int i,int radix)nDouble 类:String toString()static String toString(double d)4重载本讲稿第二十二页,共七十一页方法的重载和可变参数n定义含有多个不同参数的重载方法,可以让方法有多种不同的调用形式。
16、n当方法的参数数目不固定时,可以定义数组参数,但使用上不太方便。nJDK1.5引入了可变参数的语法:返回类型 方法名(参数类型 参数名)=一个方法的可变参数只能有一个=如果有其他参数声明,可变参数必须声明在最后=在方法中使用可变参数时,该参数相当于一个数组,可以按数组的方式使用可变参数=当调用一个方法时,如果同时存在着对应参数数目的重载方法,则该重载方法优先被调用。本讲稿第二十三页,共七十一页可变参数示例class A void print()System.out.println(重载:void);void print(int a)System.out.println(重载:+a);void
17、print(int a,int b)System.out.println(重载:+a+b);void print(int.v)/可变参数v for(int i=0;i=18&a=18&a(0.5+additoryFee)balance-=(0.5+additoryFee);return true;elsereturn false;定义自己的属性隐藏了父类属性balancebalance本讲稿第四十五页,共七十一页属性的覆盖n如何访问被隐藏的父类属性:=调用从父类继承的方法操作的是从父类继承的属性。=使用super.属性名。class D200_Card extends Number_Phone
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 基础上 精选 文档
限制150内